1、第五章 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 /预处理 void main( ) /主函数 cout “ n Hello C+ !“ endl; /输出,要点:/ 表示解释行,# 引导一个预处理语句ma
2、in 表示主函数,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 /预处理 class test /定义类 testpublic: /定义类的公共部分test(int y) x=y;void print( ) cou
3、t 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*yx= =yx ,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,2. 字符串,一对双引号括起来的字符序列,例4:“this
4、 is a string”,3. 标识符,由程序设计者确定的名字、 包括:常量名、变量名、函数名、类名等等。,例5: const pi; 中的 piint 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
5、( )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
6、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:
7、分配和消除存储空间 this: 指向自己的指针,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,例8:C+关键字的引用,class person public:char name10;void print ( );protected:char add20;void chAdd( );private:int ID;int enum;,/错,不能用关键字为变量,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,5. 分隔符,如 ; / /* */ 等等,6. 字面常量,3.14
8、15926,例9:常量与分隔符的使用 #include 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字节
9、 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 /定义函数 print,注意:可以用sizeof()函数求数据类型的内存大小,如sizeof(float) 将得到float 类型的长度 4。,第五章
10、 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; /出错,因为是常量d2=12; /出错,因为是常量,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,void print( const int
11、 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 *
12、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 ,结果: a=2 s=2 *pi=2,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,变 量的作用域及算符 :,局部变量:在函数体内声明 作用域: 从声明处 函数结束全局变量:在函数体外声明 作用域: 从声明处 程序结束,问题:局部变量名和全局变量名相同,
13、如何在函数体内访问全局变量?方法:用前缀作用域算符 : 以示访问全局 变量,第五章 C+基础,5.1 C+概述 5.2 数据和表达式 5.3 基本语句 5.4 函数 5.5 数组与指针,例12: #include / int i=5; /定义全局变量 void print( ); /定义函数名 void main( ) /定义主函数 print ( ); void print( ) /定义函数体 int i=6; /定义局部变量(同名)/输出局部变量cout “local value=“ i endl;/输出全局变量cout “global value=“ :iendl; ,结果: local
14、 value=6global 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 数组与指针,
15、算术运算符,优先级,运算符,结合,高 低,括号:( ) 单目: 双目:* / %+ 输出输入: 赋值: =,内到外,左到右 右到左 左到右 左到右 左到右 右到左,例: y= x=2*5*5+17%10+(2*4+(2+4),1,2,3,4,5,6,7,8,9,例: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=假),优先级,运算符,结合,高 低,输出输入:=
16、 = = != 赋值: =,左到右 左到右 左到右 右到左,例:int i=4, j=5, k; cout j: “j) “ ; i!=j: “(i!=j)endl;cout “ k=i= =j: “(k=i= =j)endl;,结果:ij: 0 ; i!=j:1k=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: “
17、!i “; i,结果:! i: 0 ; i 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,但意义不一
18、样,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; 52; 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小题,