C语言32个关键字如下图: 一、基本数据类型 1、unsigned:无符号的---用来声明一个无符号的变量 例如:unsignedcharvar;//var的范围:0~ 2、signed:有符号的(可以省略不写)---用来声明一个有符号的变量 例如:signedcharvar;//var的范围:-~ 3、char:字符型---用来声明一个字符型变量,占一个字节(8bit)空间 例如:charvar=1;//var的范围:-~ 4、int:整型---用来声明一个整型变量,C51:占两个字节空间,ARM:占四个字节 例如:intvar=1; 5、float:浮点型---用来声明一个浮点型(实型)变量,最多能表示到7个有效数据位,占四个字节空间。 例如:floatvar=1.23; 6、double:双精度型---用来声明一个双精度实型变量,最多能表示到15~16个有效数据位,占四个字节空间,有的系统占八个字节. 例如:doublevar=2.; 7、short:短整型---用来声明一个短整型变量,C51:跟int一样,ARM:占两个字节 例如:shortvar=1; 8、long:长整型---用来声明一个长整型变量,ARM:跟int一样,C51:占四个字节 例如:longvar=1; 9、void:空型----表示一个函数没有返回值,或者无形参 例如:voidfunction(void); 二、构造数据类型 1、struct---用来声明一种结构体类型 例如: structstu { charsex; intage; floatscore; structstu*Next; }; structstuvar; 2、union---用来声明一种共用体类型 例如: unionnon { charsex; intage; floatscore; }; unionnonvar; 3、enum---用来声明一种枚举类型,规定枚举类型的变量,只能在限定的范围内取值,否则,编译会出现警告 例如: enumem { a=23, b, c, d=56, e };//b=24,c=25,e=57 enumemvar; 三、数据的存储类别 1、auto:自动的(一般省略不写)---定义一个局部变量,默认为auto类型的,当它所在的函数调用结束时,释放内存使用时才分配内存,用完即释放。 例如:autocharvar; 2、static:静态的 ①定义一个局部变量,该变量在定义时只进行一次初始化,以后每次调用它所在的函数,其值都会保持上一次调用的结果,它所在的空间不会被释放 ②被static修饰的全局变量,则只能在它所在的C源文件中使用,其它文件不能调用,(内部全局变量) ③被static修饰的函数,只能在该函数所在的C源文件中被调用,其它文件不能调用,(内部函数) 例如: staticcharvar; staticvoidfunction(); 3、extern:外部的 ①想要调用别的C源文件中的某一个全局变量,可以使用该关键字在该文件中修饰声明该变量即可调用(前提是该变量没有被static修饰)该类型的变量也是一直占着内存不释放 ②想要调用别的C源文件中的某一个函数,可以使用该关键字在该文件中修饰声明该函数即可调用(前提是该函数没有被static修饰) 例如: externcharvar; externvoidfunction(); 4、register:寄存器的 被这个关键字修饰的变量,建议编译器将该变量在使用时放到CPU内部寄存器中,以提高执行效率 注意:该关键字只是建议,到底有没有将变量放到寄存器中无从得知。一般使用在循环次数比较多的地方。在使用时才分配内存,用完即释放 例如: registerlongi=; 5、const:常的 常变量:被const关键字声明的变量,其值不能被改变。即在声明该变量时必须要初始化该变量。 var本身还是一个变量。 constcharvar=; 例如: char*constp; //指针变量p不可改变,但是它指向的地址里面的值可变 charconst*p;或constchar*p; //指针变量p可以改变,但是它所指向的地址里面的值不能改变 constchar*constp; //p地址不可改变,里面的值也不能变 6、volatile:随时会改变的 被volatile修饰的变量或寄存器会意想不到地发生改变。 ①某些变量或寄存器(如状态寄存器)可能会受硬件影响; ②在多线程任务中,被其它线程修改(共享内存段); ③编译器会对C程序进行优化; 为了保证程序不被优化,保证CPU取到的数据是最新的(即提醒CPU每次都必须到内存中取出变量当前的值而不是取cache或者寄存器中的备份),使用该关键字修饰。 四、9条语句 四种结构: 1、顺序结构:0条 2、选择结构:2条 ①、if-elseif-elseif...else 例如: if(表达式1) { 语句s; } elseif(表达式2) { 语句s; } elseif(表达式3) { 语句s; } else { 语句s; } 用法:顺序判断if后的表达式是否为真如果碰到为真的情况,则执行其下面的{}里的语句执行完后,即退出这个多选一的结构。 ②、switch-case-break 例如: switch(变量) { case常量1:语句;...;break; case常量2:语句;...;break; case常量3:语句;...;break; default:语句; } 用法:顺序判断变量是否与常量相等,如果相等,则执行该常量:后的语句s,遇到break即跳出这个结构。 3、循环结构:3条 ①、for 例如: for(语句1;语句2;语句3) { 语句4; 语句...; } 用法:语句1:条件初始化,语句2:判断语句,判断是否成立,语句3:增值语句先执行语句1,再进行对语句2的判断,如果成立则执行{}里的语句4...,再执行语句3,在判断语句2是否依然成立,。当语句2不成立时,结束循环。 ②、while 例如: while(表达式) { 语句; ....; } 用法:先判断“表达式”是否成立,如果成立则执行{}里的语句,执行完再次判断“表达式”是否依然成立,成立则继续执行{},不成立则结束此循环结构。 ③、do-while 例如: do { 语句1; ...; }while(表达式); 用法:先执行{}里的语句,执行完后,判断表达式是否成立,如果成立,继续执行{};如果不成立,则结束循环。 4、转移结构:4条 ①、break 例如: while(t--) { dat++; if(dat==3) break;//跳出while()结构。 } 用法:仅用于跳出循环结构,且仅能跳出一层循环结构。 ②、continue 例如: charbuf=10; while(buf--) { a++; b++; continue;//遇到continue则结束这次循环 d++;//这条永远都不会执行到 e++;//这条永远都不会执行到 } 用法:用于终止本次循环,继续从下次循环开始。 ③、goto 例如: unsignedchardat=10; while(dat--) { a++; b++; Lable:c++; if(c==3) gotoLable;//直接跳到Lable标号去 d++; } 用法:无条件转移,直接跳到Lable标号去运行。 ④、return 例如: voidfunction() { chara,b; a++; return;//遇到return即返回调用处 b++;//不会被执行 return;//不会被执行 } 用法:用于函数返回,在函数调用时,遇到return即返回。如果需要返回某个值,在其后加上返回值。返回值类型必须和函数类型一致。 五、其它: 1、typedef:类型重定义(重新起名) 例如: typedefunsignedcharuchar; //用uchar重新定义unsignedchar 2、sizeof---用来求类型所占的字节数 例如: intvar=10; charg; g=sizeof(var++);//g=4; 免责声明:本文系网络转载,版权归原作者所有。如涉及版权,请联系删除! 如果喜欢这篇文章,欢迎在文章底部点赞,欢迎北京哪家医院专治白癜风白癜风最新治疗办法
|