第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针第二讲 C++语言基础第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针他是谁?
Dr,Bjarne Stroustrup,美国 Bell公司大规模编程研究中心主任,C++语言的设计创建人。
第五章 C++基础例 1:简单的 C++程序
//example 5.1
#include <iostream.h> //预处理
void main( ) //主函数
{
cout << " \n Hello C++ !" <<endl; //输出
}
要点:
// 表示解释行,# 引导一个预处理语句
main 表示主函数,void 表示无返回值
cout为输出流,类似 C语言的 printf。 endl
是换行函数。 \n 为换行符,将光标指向新行的开头。函数体用 {}括起来。
注意与 C的区别。它没有用到类的概念。
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 2,//example 5.2
#include <iostream.h> //预处理
class test { //定义类 test
public,//定义类的公共部分
test(int y) {x=y;}
void print( ) {cout << x << endl;}
private,//定义类的私有部分
int x;
};
void main( ) //主函数
{
test ob(5); //定义具体的对象
ob.print( ); //消息激活服务 print
}
结果 显示 x 的值 5
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针语 素
1,运算符 算术运算符,+,—,* 等关系运算符,<,= = 等逻辑运算符,&&,|| 等赋值运算符,=
流运算符,<<,>>
例 3,x+y,x*y
x= =y
x && y
x=y
cout << "c++";
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
2,字符串?一对双引号括起来的字符序列例 4:,this is a string”
3,标识符? 由程序设计者确定的名字、
包括:常量名、变量名、
函数名、类名等等。
例 5,const pi; 中的 pi
int x; 中的 x
void add( ); 中的 add
class student{……}; 中的 student
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针标识符的构成? 字母、数字和下划线不能以数字开头,大小写有区别。
例 6,_under_bar,m9909,t5,b7,Bb等等问题,下列哪些是正确的标识符?
Her_sales ( )
MyAdd ( )
9_class ( )
class_9 ( )
class 9 ( )
2h ( )
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
4,关键字?系统定义的有特定作用的名字
C 和 C++ 都有 (常用)
int,float,char,struct,union,const、
static,long,short,unsigned,signed、
void,enum,extern,double,typedef。
for,if,else,while,do,switch,case、
default,break,continue,return,goto
例 7,int x; float a; const pi=3.1415;
if(a= =b) x=a;
else x=b;
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针问题?能否用关键字作标识符?
答案,不能! (为什么?)
C++ 特有的关键字 (常用)
class,定义类;
public,private,protected,
定义公共,私有,保护属性和服务;
friend,定义友元;
operator,定义运算符;
inline,定义内联函数;
virtual,定义虚函数;
template,定义模板;
new,delete:分配和消除存储空间
this,指向自己的指针第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 8,C++关键字的引用
class person {
public:
char name[10];
void print ( );
protected:
char add[20];
void chAdd( );
private:
int ID;
int enum;
}; //错,不能用关键字为变量第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
5,分隔符? 如 ; {} // /* */ 等等
6,字面常量? 3.1415926
例 9,常量与分隔符的使用
#include <iostream.h>
void main( )
{
const float pi=3.1415926; //pi 的值
float r;
r=1.0;
float x=r*r*pi; /* 计算面积 */
cout << x << endl;
}
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针数据和表达式基本数据类型:
字符 char
整数 int
实数 float:
短整数 short
长整数 long
双精度 double
无符号整数
unsigned int:
类 型 大小 取值范围
1字节
2字节
4字节
2字节
4字节
8字节
2字节
256个字符
-32768 ~ 32767
1.2e-38 ~ 3.4e38
与 int 一样
± 2,147,483,647
2.2e-308 ~ 1.8e308
0 ~ 65535
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针其它 数据类型:
指针 *
引用 &
数组 [ ]
函数 ( )
结构 struct
枚举 enum
类 型 举 例
int *p; //定义指针变量 p
int &s=a; //定义 a 的引用 s
int b[10]; //定义数组变量 b
void print( ); //定义函数 print
注意,可以用 sizeof()函数求数据类型的内存大小,如 sizeof(float) 将得到 float 类型的长度 4。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针常 量 类 型
const? 标识符在其作用域内不能改变注意,在大型软件开发中常量类型很重要为什么,1,防止在函数体内改变参数的值
2,减小程序出错的可能性
3,提高程序的可维护性例 10,const int buf=512;
const int d[ ]={1,2,3,4};
buf=333; //出错,因为是常量
d[2]=12; //出错,因为是常量第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
void print( const int v)
{
cout << v << endl; //输出
v++; //出错,常量不能改变其值
}
作用,将参数声明为常量,使在函数的调用过程中,参数不被改变。
在软件的实际开发中很有用。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针变 量
t v
t v[]
t *v
t *v[]
t &v
t v( )
t *v( )
变量定义形式(其中 t 为类型,v 为变量)
形式 语 义 示 例类型为 t 的变量
t 型数组指向 t 型的指针
t 型指针数组
t 型的引用返回类型 t 的函数返回指向 t 型指针的函数
int a
float b[]
int *p
int *p[]
int &a
void f( )
void *f( )
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 11,类型的定义、引用和指针运算
int a=1,b; //定义整型变量 a,b
int &s=a; //定义 a 的引用 s,即 a 的别名
float f[10]; //定义实数数组 f[10]
int *p[]; //定义指针数组
int *pi; //定义指针
s=s+1 //s 的值加 1,同样 a 的值也加 1
pi = &a; //将 a 的地址赋给 pi
pi = &s; //将 s 的地址赋给 pi
cout << " a= " << a << " s= " << s
<< " *pi= " << *pi;
结果,a=2 s=2 *pi=2
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针变 量的作用域及算符,?
局部变量,在函数体内声明作用域,从声明处? 函数结束全局变量,在函数体外声明作用域,从声明处? 程序结束问题,局部变量名和全局变量名相同,
如何在函数体内访问全局变量?
方法,用前缀作用域算符,? 以示访问全局变量第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 12:
#include <iostream.h> //
int i=5; //定义全局变量
void print( ); //定义函数名
void main( ) //定义主函数
{ print ( ); }
void print( ) //定义函数体
{ int i=6; //定义局部变量( 同名 )
//输出局部变量
cout << "local value=" << i << endl;
//输出全局变量
cout << "global value=" <<,:i<<endl;
}
结果,local value=6
global value=5
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针运 算 符要点:
1,运算功能,能做什么
2,运算对象的限制:
运算对象的个数,如 + 为双对象(双目)
类型的限制,求余运算 %只能用 int
值的限制,除数非零
3,运算优先规则多个运算符的运算次序。
4,结合规律多个运算符的结合次序。
如,2*6/2 从左到右
x=y=z=2 从右到左,
5,运算值的类型,结果类型第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针算术运算符优先级 运算符 结合高低括号:( )
单目,–
双目,* / %
+ -
输出输入,<< >>
赋值,=
内到外,左到右右到左左到右左到右左到右右到左例,y= x=2*5*5+17%10+(2*4+(2+4))
12 34 5 67 89
例,cout << 6* - 4<<"," <<1/2<<"," <<1/2.0;
5 2 1 6 7 3 8 9 4
结果,-24,0,0.5
10
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针关系运算符 (6 个,运算结果,1=真 ; 0=假 )
优先级 运算符 结合高低输出输入,<< >>
< <= > =>
= = !=
赋值,=
左到右左到右左到右右到左例,int i=4,j=5,k;
cout << " i>j,"<<(i>j)<< " ; i!=j,"<<(i!=j)<<endl;
cout << " k=i= =j,"<<(k=i= =j)<<endl;
结果,i>j,0 ; i!=j:1
k=i= =j,0
3 4 1 5 6 2 7
3 4 2 1 5
问题:括号可否去掉?
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针逻辑运算符 (3 个,0=假;其它 =真 )
a b a||b 或例,int i=4,j=1,k=0;
cout << " ! i," << ! i<< "; i&&k," <<(i&&k)
<< "; j||k," << (i||k) << endl;
结果,! i,0 ; i&&k,0; j||k,1
!a 非 a&&b 与真 真 假 真 真真 假 假 假 真假 真 真 假 真假 假 真 假 假优先级?! 为单目运算符,与单目 – 同级,&&,
|| 在关系运算符之后,从左到右,
4 5 3 6 7 1
8 9 2 10
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针常用复合赋值运算符优先级 运算符 结合高低单目增量,+ +
单目减量,– –
赋值,=,+=,- =
*=,/=
右到左与单目 –
同级,
与 =同级
v++ 和 + +v都等价于 v=v+1,但意义不一样
v – – 和 – –v都等价于 v=v-1,但意义不一样
v+= i 等价于 v=v+ i; v – = i 等价于 v=v – i,
v*= i 等价于 v=v*i; v/=i 等价于 v=v/i,
注意,单目优先于双目第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
+ +v称为前置增量,
先进行增量运算,
再取其值参与其它运算
v+ +称为后置增量,
先取其值参与其它运算,再对 原值 进行增量运算,
结果? 2; 5
2; 6
例,int i=1,j=5;
cout << + + i << "; " << j+ + <<endl;
cout << i << "; " << j <<endl;
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针课堂总结
标识符的构成
关键字,C和 C++共有的,C++特有的
变量的定义形式及作用域
运算符的 5个要点,
运算符的优先级及其应用,包括:
算术运算符、关系运算符,逻辑运算符、常用复合赋值运算符。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针作 业教材? 习题 5
第 1题,
第 2题的第 1,3,5,7,9小题