OOP(C++)_第3章_C++中的C(最终版).ppt
《OOP(C++)_第3章_C++中的C(最终版).ppt》由会员分享,可在线阅读,更多相关《OOP(C++)_第3章_C++中的C(最终版).ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、OOP(C+)_第第3章章_C+中的中的C(最终版最终版)23.1 C+的词法及词法规则的词法及词法规则33.1 C+3.1 C+的词法及词法规则的词法及词法规则1.1.标识符标识符: 由字母和数字组成,首字符必须是字母(“_”也看作字母)的函数名字、类名、变量名、常量名、对象名、标号名、类型名等。 合法的标识符:hello97, a_dog, _uname,CLASS, 非法的标识符:97hello, a#123, class 2.2.关键字关键字: 系统已预定义的单词,属于保留字,用户不可再重新定义。 asm auto break case catch char class const c
2、ontinue default delete do double else enum extern float for friend goto if inline int long new operator private protected public register return short signed sizeof static struct switch template this throw try typedef union unsigned virtual void volatile while bool true false43.1 C+的词法及词法规则的词法及词法规则(
3、cont.)3.运算符运算符: 系统预定义的函数名字 eg: +,-,*,/,sizeof 作用域分辨符: : eg class_name:member 全局作用域分辨符: : eg :name 堆分配/回收运算符:new , delete eg int * pint; pint=new int(10) int * parr; parr=new int10; delete pint; delete parr; 成员节:.* object.*pointer_to_member 成员节: -* pointer-*pointer_to_member53.1 C+的词法及词法规则的词法及词法规则(co
4、nt.)4.分隔符(标点符号)分隔符(标点符号) 空格:单词与单词之间 int i; 逗号:如说明多个变量,函数的多个参数分隔 int i,j,k; 分号:语句之间,如for循环中, for(int i;i10;i+) 冒号:语句标号与语句之间的分隔符 括号: () 大括号: 5. 常量常量: 在程序中直接使用符号表示的数据。 如:3.1415, “hello world!”6. 注释符注释符 /* */ /* This program writes two messages to the screen*/ / / This is also a comment.63.2 数据类型简介数据类型简
5、介 数据类型定义使用存储空间(内存)的方式。通过定义数据类型,告诉编译器怎样创建一片特定的存储空间,以及怎样操纵这片存储空间。 int i, j, k ; / 内定义类型 struct student stu40; / 结构体 Cstudent cstu10; / 类73.2.1 基本内部基本内部类型类型l char/ int/ float/ double/ voidint main() /* Definition without initialization: */ char protein; int carbohydrates; float fiber; double fat; /* Si
6、multaneous definition & initialization: */ char pizza = A, pop = Z; int dongdings = 100, twinkles = 150, heehos = 200; float chocolate = 3.14159; / Exponential notation: double fudge_ripple = 6e-4; /:83.2.1 基本数据类型基本数据类型-修饰符修饰符修饰符修饰符 signed unsigned long short const volatile(见下页)(见下页)93.2.1 基本数据类型基本数
7、据类型-修饰符修饰符(续续)l volatile:告诉编译程序,该变量值可能按程序中没告诉编译程序,该变量值可能按程序中没有显示说明的方式改变,防止编译器作不正确的优化。有显示说明的方式改变,防止编译器作不正确的优化。 eg: 用户程序中定义的用户程序中定义的GlobalVar被被OS的时钟子程的时钟子程序用来存放时间。序用来存放时间。 volatile int GlobalVar; int i,k; k=GlobalVar; for(i=1;i10000;i+) couti; k=GlobalVar;(尽管在用户程序中未显式修改其值,但(尽管在用户程序中未显式修改其值,但GlobalVar
8、的值仍可能变化。)的值仍可能变化。)103.2.1 基本数据类型基本数据类型-字长字长 字长字长#includevoid main()cout sizeof(char) endl;cout sizeof(int) endl;cout sizeof(float) endl;cout sizeof(double) endl;cout sizeof(long double) endl;输出输出:(硬件相关硬件相关)1 (1)2 (4)4 (4)8 (8)10 (8)注:注: C C的规范的规范(C+(C+继承继承) )并不说明每一个内部类型必须并不说明每一个内部类型必须有多少位,而是规定内部类型必须
9、能存储的最大值和最有多少位,而是规定内部类型必须能存储的最大值和最小值。因此,内部类型的字长跟硬件相关。小值。因此,内部类型的字长跟硬件相关。113.2.1 基本数据类型基本数据类型-bool类型类型C中:非中:非0值表示值表示“真真”,0表示表示“假假”C+: 内部常量内部常量true表示表示“真真”,false表示表示“假假” bool tag; tag = true ; if () tag = false ; if(tag) cout“TRUE”; else cout “FALSE” ;123.2.2 构造类型构造类型-数组数组 数组:数组:数目固定、类型相同的若干个变量的有序 集合;在
10、内存中顺序存储。- 定义:定义: N1 N2Nk ; int a3; / 一维数组一维数组char b35; / 二维数组二维数组 float c357; / 三维数组三维数组 思考:思考: a+1 vs b+1 vs c+1? c234 相对与数组起始地址的偏移?相对与数组起始地址的偏移? 13 3.2.2 构造类型构造类型-数组数组(续续) String:字符串数组字符串数组 char s5 = “abcd”; char s34 = “abc”, “ mnp”, “ xyz”; char s 4 = “12”, “ er”, “ a”; 对对/错错? char s4 = “12”,”er”
11、,”a”;.对对/错错? (char s4 = 错误定义)问:跟普通数组的区别?问:跟普通数组的区别?答:字符串数组可以整体参与运算。答:字符串数组可以整体参与运算。143.2.3 构造类型:指针构造类型:指针51000H1000H地址值地址值apl 指针:是一种特殊的指针:是一种特殊的变量,具有一般变量的三个具有一般变量的三个 基本要素:基本要素:名字、类型、值;l 指针的指针的类型是它所指向变量的类型;是它所指向变量的类型;l 指针的指针的值是该指针是该指针“指向指向”的变量的地址。的变量的地址。int a=5; / a的值是的值是5,类型是,类型是 int ,存储在,存储在 DS:100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OOP _C 中的 最终版
限制150内