1、C 语言知识点总结语言知识点总结C 语言知识点总结.1一、一、常量常量.2二、二、标识符标识符.2三、三、变量变量.2四、四、表达式表达式.3五、五、输入输出函数输入输出函数.4六、六、C C 语言的语句语言的语句.5七、七、C C 程序的基本结构程序的基本结构. 5八、八、选择结构语句选择结构语句.5if(表达式表达式) 语句语句 1 else 语句语句 2.5条件运算符条件运算符 表达式表达式 1? 表达式表达式 2 : 表达式表达式 3.6switch 语句语句.6九、九、循环结构循环结构.6for 循环语句循环语句.6while 循环语句循环语句 do while 循环语句循环语句.6
2、十、十、数组数组.7十一、十一、 字符串函数字符串函数.7十二、十二、 函数函数.8十三、十三、 指针指针.9十四、十四、 宏定义宏定义.10十五、十五、 结构体,共用体,枚举类型结构体,共用体,枚举类型.10十六、十六、 TurboTurbo C C 的使用的使用. 12一、一、常量常量数字常量数字常量i.普通数字普通数字:1,35,2.7ii.指数形式指数形式:2.45e-2 等价于 2.45*10-2注意注意 e e 大小写皆可大小写皆可,e e 前面的数字前面的数字不能省不能省,就算是,就算是 1 1 也不能省,后面的数字一定要是也不能省,后面的数字一定要是整数整数iii.长整型,单精
3、度浮点型长整型,单精度浮点型:3235L,32.5F 分别表示 3235 是长整型数据,32.5 是单精度浮点型左,若不写上 L,F 则表示 3235 是整型,32.5 是双精度浮点型,L,F 大小写皆可字符常量字符常量i.普通字符常量普通字符常量:用单引号单引号把一个字符括起来,如A,ii.转义字符常量转义字符常量:一对单引号括起来并以“”开头的字符序列,如n(回车)、123(8 进制 123 对应的字符), x23(16 进制 23 对应的字符)字符串常量字符串常量用一对双引号双引号把一个字符序列括起来,如“ABCef” , 系统存放字符串常量,每个字符分配一个字节,各字符所占字节紧邻,并
4、且字符串末尾会给再开一个字节里面放一个0做为结束标志做为结束标志。符号常量符号常量定义格式 #define 符号常量名符号常量名 符号常量值符号常量值,如#define N 20 则定义了符号常量 N, 其值为 20,注意符号常量名和符号常量值之间是用空格隔开注意符号常量名和符号常量值之间是用空格隔开,而不是写上而不是写上= =号,号,#define#define 和符号常量名之间也有空格的和符号常量名之间也有空格的。二、二、标识符标识符命名规则命名规则以数字,字母,下划线这三类字符组成,但只能以字母或下划线开头只能以字母或下划线开头,而不能也数字开头,另外不能将关键字做为标识符不能将关键字做
5、为标识符。32 个关键字表在P365 附录 B变量名,函数名,符号常量名全都是标识符变量名,函数名,符号常量名全都是标识符三、三、变量变量变量的定义格式变量的定义格式类型名类型名 变量名变量名;如 inta;定义了一个整型常量 a。变量名是由人类随便定义的,符合命名规则的前提下, 爱写啥就写啥。 所以什么flag, cc, y1或者函数名fun,find等全部是自定的用来做为名字而已,没有更特别的意义。类型名类型名int 整型,long 长整型: 用于存放整数,只是数值范围不同float 单精度浮点型 double 双精度浮点型:用于存放实数,数值范围,精度不同char 字符型:用于存放字符变
6、量赋值,初始化变量赋值,初始化inta=3;定义的同时初始化a=6*9;定义后在程序中进行赋值变量的值变量的值只有在赋值操作时才会被改变只有在赋值操作时才会被改变, 即将其放在等号左边时才会改变它的值,或自增自减操作或自增自减操作:a=5,a+,a-,像 a+3 并未改变 a 的值,只是使用了 a的值而已.自增自减运算自增自减运算变量变量+,+变量,变量变量,变量-,-变量变量使变量的值自增 1 或自减 1等价于 变量=变量+1变量=变量-1+,-放于变量前后效果的区别:当自增自减运算做为表达式的一部分时,+,-放在变量前面是先自增放在变量前面是先自增自减再使用变量的值自减再使用变量的值, 放
7、在变量后面则是先使用变量的值放在变量后面则是先使用变量的值, 再自增自减再自增自减。如 x=3; printf(“%d”,+x);则相当于执行了+x; printf(“%d”,x);这样的操作所以打印出 4再如 x=3; printf(“%d”,x+);则相当于执行了 printf(“%d”,x); x+;这样的操作,则打印出 3,当然最后 x 的值还是 4。四、四、表达式表达式运算符和运算对象运算符和运算对象一个运算符都有若干个运算对象, 如 + 必然要跟两个运算对象才能进行加法运算: 3+5。 C 语言里称需要跟 n 个运算对象的运算符为 n 元运算符。一元运算符有一元运算符有:!, (类
8、型名)二元运算符有二元运算符有: +,-,*,/,%(求余), =,+=, -=,*=, /=,%=, , =, = =(等于), !=(不等于),&(且) , |(或)多元运算符有多元运算符有: ,运算符的优先级和结合性运算符的优先级和结合性i.优先级优先级:同一个运算对象左右两边若同时有两个运算符,则这两个运算符优先级高的先进行运算。ii.结合性结合性:若同一个运算对象左右两边的两个运算符优先级相同, 则根据结合性判断先进行哪个运算,自左自右结合性的先算左边的运算符,自右自左的先算右边的运算符。iii.各运算符的优先级和结合性见各运算符的优先级和结合性见 P365 附录附录 C强制类型转换
9、强制类型转换格式格式: (类型名类型名) 表达式表达式 。将后跟的表达式的值的数据类型转换为与圆括号内的类型名一致的类型。注意类型名一定要用()注意类型名一定要用() 括起来括起来。算术表达式算术表达式i.算术运算符算术运算符:+,-,*,/,%(求余)ii.由算术运算符加上运算对象构成算术表达式算术表达式,如 3+3*6-9/2iii.值值:跟我们小学时学的一样,就是表达式的计算结果iv.iv.整数除以整数结果取整数部分,故整数除以整数结果取整数部分,故 1/31/3 得到的值是得到的值是 0 0v.v.5%35%3 结果为结果为 2 2,想想小学除法,求余得到的是余数不是商。,想想小学除法
10、,求余得到的是余数不是商。赋值表达式赋值表达式i.赋值运算符赋值运算符:=,+=,-=,*=,/=,%=ii.赋值表达式赋值表达式:变量=表达式,如 x=3+6,x+=6-9,x+=x*=3+4注意等号注意等号左边只能是变量左边只能是变量iii.复合赋值运算符的运算复合赋值运算符的运算:以/=为例:x/=表达式 等价于 x=x/(表达式)iv.值值:=号左边的变量最终的值关系表达式关系表达式i.关系运算符关系运算符: , =, = =(等于), !=(不等于)ii.由关系运算符加上运算对象构成关系表达式关系表达式,如 3=4, 2=aiii.值值:满足相应运算符所指定的关系的值为 1,否则为
11、0逻辑表达式逻辑表达式i.逻辑运算符逻辑运算符:&(且) , |(或) , !(非)ii.由逻辑运算符加上运算对象构成逻辑表达式逻辑表达式,如 3&4, x|!yiii.值值:满足相应运算符所指定的关系的值为 1,否则为 0iv.iv.进行进行 |或或 运算时运算时,若若|左边的表达式值为左边的表达式值为 1 1,则不再对右边的表达式则不再对右边的表达式进行运算。进行运算。v.v.进行进行 &且且 运算时运算时,若若&左边的表达式值为左边的表达式值为 0 0,则不再对右边的表达式则不再对右边的表达式进行运算。进行运算。逗号表达式逗号表达式i.逗号运算符逗号运算符: ,ii.用逗号将各种表达式连
12、续起来构成逗号表达式逗号表达式,如 3+4,a=9,8*aiii.值值:组成逗号表达式的各个表达式中的最后一个的值,如上例为 8*a题目:P71117P81833五、五、输入输出函数输入输出函数scanf(“格式控制串格式控制串”,变量地址表列,变量地址表列);如 scanf(“%d%c%d”,&a,&ch,&b);scanf(“%4f”,&x);注意:i.格式控制串可控制截取用户输入的前几个字符给变量, 但不能控制输入几位小数给变量,如不能写成 scanf(“%4.2f”,&x);ii.第二个参数给的是地址第二个参数给的是地址,即要么是&+变量名或数组元素名的形式,要么就是一个数组名或指针变
13、量名,如 int *p,a; p=&a; scanf(“%d”,p);iii.考试时注意看题目给你写好的考试时注意看题目给你写好的 scanf 的格式的格式1.若其格式控制串内各格式符用“, ”隔开如scanf(“%d,%c,%d”,&a,&ch,&b);那输入时也要用逗号隔开,如此例输入时应:3,+,52.若是这种格式 scanf(“%d %d”,&a,&b);则输入时应:3 5;3.若是这种格式 scanf(“%d%c%d”,&a,&ch,&b);则输入时应 3+5,若写成 3+ 5 则 a=3,ch= (空格),b=任意值( (自己上机运行看看结果自己上机运行看看结果) )printf(
14、“格式控制串格式控制串”,输出项表列,输出项表列);如 float x=7.5; printf(“%8.2f”,x);此处的意思是将 x 打印出来,且占 8 列,保留两位小数。自己上机运行看看效果。常用格式符汇总:常用格式符汇总:i.%d:输入输出整型数据,%ld:输入输出长整型数据ii.%c:输入输出字符型数据iii.%f:输出单(双)精度浮点型数据,输入单精度型数据。%lf:输入双精度型数据iv.%s:输入输出一个字符串,用 printf 输出字符串时,输出项书写时可为字符串常量,或字符数组名。如 printf(“%s”,”hello”);或 charstr10=”hello”; prin
15、tf(“%s”,str);v.%u:输入输出无符号整型,%o:输入输出八进制数,%x:输入输出十六进制数getchar();函数调用后返回用户输入的一个字符,故需再定义一个变量来存放这个字符,即使用时应 char c; c=getchar();意思就是接收用户输入的一个字符,并将其赋值给变量 c。putchar(字符常量或字符变量名字符常量或字符变量名);如 char c=A; putchar(c);或 putchar(A);都会向屏幕输出字符 A。六、六、C C 语言的语句语言的语句表达式语句表达式语句:由表达式末尾加上分号构成。函数调用语句函数调用语句:由函数调用表达式加上分号构成。空语句
16、空语句: ;选择结构语句选择结构语句:if 语句 switch 语句循环语句循环语句:for 语句 while 语句 do while 语句复合语句复合语句:用花括号将以上任意语句括起来构成一条复合语句。七、七、C C 程序的基本结构程序的基本结构void main()声明部分声明部分:用来定义变量和声明自定义函数的原型,需以“; ”结尾,如 int x;执行语句部分执行语句部分:第六点里介绍的各种语句,如 x=3;printf(“%d”,x);main 函数外可写自定义函数函数外可写自定义函数。如int max()return 0;八、八、选择结构语句选择结构语句if(表达式表达式) 语句语
17、句 1 else 语句语句 2如果 if 语句的圆括号内的表达式值为非 0,则执行语句 1,值为 0 则执行语句 2。i.表达式可为任意表达式表达式可为任意表达式,if 语句执行的实质是判断表达式的值是否为 0来决定执行语句 1 还是语句 2。另外请在此处表达严重关切另外请在此处表达严重关切,不管是高不管是高手还是菜鸟经常会把判断两个数相等的符号手还是菜鸟经常会把判断两个数相等的符号“=”写成了一个等号写成了一个等号“= =”成为了赋值运算,这样的写法不会引发编译错误,但结果会与原意大成为了赋值运算,这样的写法不会引发编译错误,但结果会与原意大大不同,所以考试前请再三提醒自己。大不同,所以考试
18、前请再三提醒自己。ii.语句语句 1 和语句和语句 2 都只能是一个语句都只能是一个语句,若要跟多条语句,切记用一对若要跟多条语句,切记用一对括起来,构成复合语句;也不要随便在圆括号后加括起来,构成复合语句;也不要随便在圆括号后加“; ” ,因,因“ ; ”构成一条空语句构成一条空语句, 这会使后面跟的语这会使后面跟的语句句 1 1 不再属不再属于于 i if f 语句的组成部分语句的组成部分。iii.if 语句的三种结构1.单边单边: if(表达式) 语句2.双边双边:if(表达式) 语句 1 else 语句 23.多层多层(重点掌握重点掌握):if(表达式 1) 语句 1else if(表
19、达式 2) 语句 2else if(表达式 3) 语句 3else 语句 n条件运算符条件运算符 表达式表达式 1? 表达式表达式 2 : 表达式表达式 3若表达式 1 的值非 0,则取表达式 2 的值做为整个表达式的值,否则取表达式 3 的值为整个表达式的值。如 34? 1:2该表达式的值为 2switch 语句语句switch(表达式)case 表达式 1:语句case 表达式 2:语句case 表达式 n:语句default: 语句语句执行过程:先计算表达式的值,然后判断该值与表达式 1 到表达式 n 中的哪个相等,若与表达式 i 的值相等,则执行表达式 i 后的所有语句,当遇当遇到到
20、break;语句时结束整个语句时结束整个 switch 语句的执行语句的执行。表达式 1 到表达式 n 的值都不相等的情况下执行 default 后跟的语句。每个 case 后可跟多条语句。九、九、循环结构循环结构for 循环语句循环语句for(表达式 1;表达式 2;表达式 3) 循环体语句语句执行过程:1.计算表达式 12.判断表达式 2 的值是否为 0,若为 0,语句执行结束,若不为 0,进入步骤 33.执行循环体语句 (需注意的是循环体语句只能有一个语句需注意的是循环体语句只能有一个语句, 若要包含多若要包含多个语句要用一对个语句要用一对括起来,构成一条复合语句,此处也不要随便加上括起
21、来,构成一条复合语句,此处也不要随便加上“; ;”,因一个,因一个“; ”可构成一条空语句,这会使得后面真正的循环体可构成一条空语句,这会使得后面真正的循环体语句不属于语句不属于 forfor 循环语句的部分循环语句的部分) 。进入步骤 44.计算表达式 3,然后重新进入步骤 2while 循环语句循环语句 do while 循环语句循环语句i.while(表达式表达式) 循环体语句循环体语句执行过程:1.判断表达式的值是否为非 0,若是进入步骤 2,否则结束语句执行。2.执行循环体语句,重新回到步骤 1。ii.do循环体语句循环体语句while(表达式表达式);执行过程:1.执行循环体语句,
22、进入步骤 22.判断表达式的值是否为非 0,若是重新回到步骤 1,否则结束语句执行。这里要注意的地方跟这里要注意的地方跟 forfor 语句一样,即循环体语句只能有一个语句,若要语句一样,即循环体语句只能有一个语句,若要包含多个语句要用一对包含多个语句要用一对括起来,构成一条复合语句,此处也不要随便加括起来,构成一条复合语句,此处也不要随便加上上“; ;”,因一个,因一个“; ”可构成一条空语句,这会使得后面真正的循环体语可构成一条空语句,这会使得后面真正的循环体语句不属于句不属于 whilewhile 循环语句的部分,另外循环语句的部分,另外 dodo whilewhile 循环的循环的 w
23、hile(while(表达式表达式) )后后是要加是要加“; ”的。的。break 语句语句:放在循环体内实现的功能是结束其所在的那层循环的执行放在循环体内实现的功能是结束其所在的那层循环的执行。十、十、数组数组定义格式定义格式:数据类型数据类型数组名数组名整型常量整型常量;如 int a10; 定义了一个整型数组,数组名为 a,这个数组含有 10 个元素。引用数组元素引用数组元素: 格式:数组名数组名下标下标切记下标值从切记下标值从 0 开始开始。下标可为常量,表达式,变量等,如 int i=3; a0=5;a3*2=9; ai=7;初始化初始化:数据类型数据类型数组名数组名整型常量整型常量
24、=数据表列数据表列;将数据表列的各个值依次赋值给数组的各个元素。如 int a5=0,1,2,3,4;则数组 a 各元素 a0到a4的值分别为 0,1,2,3,4遍历数组元素遍历数组元素数组定义后,我们不能对数组进行整体的操作不能对数组进行整体的操作,如 int a10;不能用 a=3 这样的操作将数组的各元素都赋值为 3;而只能一个一个元素的进行赋值,如a0=3;a1=3;a2=3a9=3; 当然此时我们就可以借助于一个 for 循环来控制下标的变化从而对数组的各个元素进行赋值for(i=0;i y ? x : y ;return( z ) ;注意点:1.函数类型是指返回值的类型函数类型是指
25、返回值的类型, 即要与 return 语句后跟的表达式的值的类型一致。若函数类型为若函数类型为 voidvoid 则说明该函数无返回值则说明该函数无返回值, 即函数体里不能出现即函数体里不能出现 returnreturn 语句语句。2.形式参数列表里定义的变量要记得给它们指定类型,而且如果同时要定义多如果同时要定义多个,应在每个前面都分别指定类型名个,应在每个前面都分别指定类型名,而不能写成 int x,y;3.函数体里能写的语句跟 main 函数一样,在开头可定义所需要的变量,后面跟上一堆执行语句。函数调用流程函数调用流程以上面的函数为例,在 main 函数进行调用:void main()
26、int a,b,c;scanf(“%d%d”,&a,&b);printf(“%d”,max(a,b);或 c=max(a,b);printf(“%d”,c)以上两种方法都会在屏幕中打印出 a,b 间的较大值。调用函数的格式调用函数的格式 函数名函数名(实际参数列表实际参数列表);调用的时候像什么函数类型,形式参数的类型就不要加上去了。max(a,b)中 max 就是函数名,写上变量名 a,b 是实际参数列表,执行这个调用语句时,会先把 a,b 的值给相应位置的形式参数即执行了 x=a,y=b 这样的操作,然后开始执行 max 函数的函数体的语句。当 max 函数体里执行到一个 return 语
27、句时,则 max 函数结束执行,将 return 后的表达式的值返回给main函数调用max函数的那个位置, 即若上面a=3,b=5则max(a,b)return后的表达式的值应该是5 也就是说执行完 max后把5返回到调用max 的位置可看成 printf(“%d”,5);或另一种解法的 c=5。十三、十三、指针指针指针变量的声明指针变量的声明: 类型名类型名 * 指针变量名;指针变量名;通过指针变量访问它所指向的普通变量的值通过指针变量访问它所指向的普通变量的值先将普通变量的地址赋值给指针变量,再通过指针运算符* 得到普通变量的值。int *p,x,y;x=3;p=&x;则 printf(
28、“%d”,*p);会打印出 3 即 x 的值y=*p;则 y 的值变为 3*p=5;则 x 的值变为 5指针变量加上(减去)一个位移的效果指针变量加上(减去)一个位移的效果若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组加一减一得到的是那个数组元素下一个或前一个元素的地址元素下一个或前一个元素的地址。int a10; p=&a3;*p 得到的是 a3的值。若 p+;此时 p 存放的是 a4的地址&a4; *p 得到的就是 a4的值。或 p-;此时 p 存放的是 a2的地址&a2,*p 得到的就是 a2的值。行指针行指针i.主要是对于二维数组来说的,二维数组每行都有自己的地址,第
29、0 行地址用 数组名数组名 表示,第 i 行地址为 数组名数组名+i;而想要得到二维数组里一个元素的地址,必需先得到其所在行的地址,然后再由那个地址得到元素的地址,比如说 inta34;定义了一个二维数组,该二维数组第 0 行的地址为 a,第 1 行的地址为 a+1,第 2 行的地址为 a+2,想从想从行的地址得到元素的地址,需在行地址前加上指针运算符行的地址得到元素的地址,需在行地址前加上指针运算符“*” ,即*a就是第 0 行首个元素的地址即 a00的地址,而 a02的地址就是在a00的地址基础上加上位移量 2,即*a+2,然后想得到 a02这个元素的值呢就再加上一个指针运算符“*” ,即
30、*(*a+2),类似地,想得到a22这个元素的值呢就是*(*(a+2)+2)ii.定义行指针变量: 类型名类型名(*变量名)变量名)数组长度数组长度;如 int (*p)4,a34; p=a;此时就可把 p 当成 a 来用,用法同上所述。判断是否合法访问数组元素判断是否合法访问数组元素:若是指针法访问,判断指针后跟的是否地址;若是下标法访问,判断下标有无越界。函数指针:函数名即为函数的地址(指针)函数指针:函数名即为函数的地址(指针)i.函数指针变量的定义:函数指针变量的定义: 类型名类型名 (*变量名变量名) (形参列表形参列表);如 int (*p)();ii.赋值赋值:指针变量指针变量=
31、函数名函数名;设有个函数其函数名为 max,则要将该函数的地址给 p 的话只要执行如下语句即可 p = max;指针数组:指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,定义格式为 类型名类型名 * 变量名变量名数组长度数组长度; 如 int * p10;指向指针的指针指向指针的指针: 指针变量也是一种变量, 故在内存中也有对应的一个地址,而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指针变量,定义格式定义格式类型名类型名 * 变量名;变量名;如 int *p1; int *p2; int a=3;可进行赋值p1=&a; p2=&p1; 则 a 、*p1 和 *p
32、2 的值都是 3.十四、十四、宏定义宏定义无参宏定义无参宏定义 #define标识符标识符值值定义后, 出现所定义的标识符的地方都将以定义时指定的值来代替。#defineM2+3main()int x;x=M*M;则 x 的值为 2+3*2+3=11 若想得到的结果是(2+3)*(2+3)则定义时也写成这样 #define M (2+3)注意注意#define#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加、标识符、值之间都要用空格隔开,且宏定义结尾不需加分号。分号。带参宏定义带参宏定义#define 标识符标识符(参数表参数表)值值#defineS(x,y)x*ymain(
33、)int a=3,b=4,c=5,d=6;printf(a*b=%dn, S(a,b);此时会打印出 a*b=12printf(a+b*c+d=%dn , S(a+b,c+d); 此时会打印出 a+b*c+d=29,带参宏定义执行时是将 a+b 这样一个表达式代替 x, c+d 这样一个表达式代替 y, 所以 S(a+b,c+d)进行的是 a+b*c+d 的运算, 而不是将 a+b 的值给 x,c+d 的值给 y 然后再做 x*y,这点跟函数调用传递参数是不一样的这点跟函数调用传递参数是不一样的。自定义类型名自定义类型名 typedef:对已存在的类型名取一个外号。:对已存在的类型名取一个外号
34、。i.基本格式:typedef原类型名新类型名;ii.typedefint INTEGER; 则 int a,b;等价于 INTEGER a,b;iii.typedefintNUM10; 则 int a10;等价于 NUM a; a 即为一个有 10个元素的数组的数组名。iv.typedef int * INTEGER; 则 int *a,*b;等价于 INTEGER a,b;十五、十五、结构体,共用体,枚举类型结构体,共用体,枚举类型结构体结构体i.结构体类型的定义及变量的定义结构体类型的定义及变量的定义struct结构体名类型 成员 1;类型 成员 2;类型 成员 n;变量名;如struc
35、t studentlongnum;char name10;int score4;st1;定义类型时同时定义变量struct student st2;定义类型后,用类型名定义变量还有一种structlong num;char name10;int score4;st3;不给类型名,直接定义变量ii.结构体变量所占字节数结构体变量所占字节数:各成员各占字节数之和各成员各占字节数之和,如以上如以上 st1,st2,st3 的的字节数皆为字节数皆为 10+20+2*4=38iii.结构体变量初始化:结构体变量初始化:struct student a=20030001, 张三张三, 70,75,80,8
36、5;iv.结构体数组定义及初始化:结构体数组定义及初始化:struct student a3=20030001,zhang,89,90,91,92,20030002,liu,68,69,70,71,20030003,li,57,58,59,60 ;v.结构体变量成员的访问结构体变量成员的访问1.结构体变量名结构体变量名. 成员名成员名 如如 st1.num2.使用结构体类型的指针:使用结构体类型的指针:(*结构体指针名结构体指针名) . 成员成员或或结构体指针名结构体指针名成员名成员名struct student *st;st=&st1;st-num 或或(*st).num共用体共用体i.共用
37、体类型的定义及变量的定义共用体类型的定义及变量的定义union共用体名 类型成员名 1;类型成员名 n;变量的定义与结构体类似,也有三种方法。union dataint i;char ch;float f;d1; 定义类型时同时定义变量union data d2; 定义类型后,用类型名定义变量unionint i;char ch;float f;d3; 不给类型名,直接定义变量ii.共用体变量所占字节数共用体变量所占字节数:各成员所占字节数的最大值各成员所占字节数的最大值,如上如上 d1,d2,d3 所所占字节数皆为占字节数皆为 4.(单精度浮点型变量所占字节数最多为(单精度浮点型变量所占字节
38、数最多为 4).iii.共用体变量成员的访问共用体变量成员的访问1.共用体变量名共用体变量名. 成员名成员名 如如 d1.i2.使用共用体类型的指针:使用共用体类型的指针:(*共用体指针名共用体指针名) . 成员成员或或共用体指针名共用体指针名成员名成员名union data *dd;dd=&d1;dd-i 或或(*dd).iiv.共用体成员的值:共用体成员的值:由于共用体各成员共用同一段内存区,故同一时刻由于共用体各成员共用同一段内存区,故同一时刻只有一个成员的值是正确的只有一个成员的值是正确的。如如 d1.i=5;d1.ch=a;则此时则此时 d1.i 的值就不的值就不是是 5 了,而是其
39、他值了,了,而是其他值了,d1.ch 的值是的值是a枚举类型枚举类型i.枚举类型的定义:枚举类型的定义:enum 枚举名枚举元素名 1,枚举元素名 2,枚举元素名 n;ii.枚举元素的值:枚举元素的值:默认值分别为默认值分别为 0 0、1 1、n-1n-1。枚举元素的值也可在定义时重指定枚举元素的值也可在定义时重指定,对对于没有指定值的元素,按顺序加于没有指定值的元素,按顺序加 1 1如 enum weekdaysun=7,mon=1,tue,wend,thur,fri,sat;则 sun 值为 7,mon值为 1,tue 值为 2,wend 值为 3,thur 值为 4,fri 值为 5,sat 值为 6十六、十六、TurboTurbo C C 的使用的使用菜单激活菜单激活: F10菜单切换菜单切换:左右方向键左右方向键在不同菜单间切换,上下方向键上下方向键在同一个菜单不同选项间切换。载入文件载入文件:两种方法:1.找到源文件所在位置找到源文件所在位置,直接将其拉到直接将其拉到 Turbo C 快捷快捷方式上;方式上;2.F3运行程序运行程序: ctrl+F9看程序运行结果看程序运行结果:alt+F5进入编辑状态进入编辑状态:菜单 Edit保存保存: F2插入状态切换插入状态切换: Insert 键