C语言的32个关键字汇总

关键字汇总

1、基本数据类型
signed unsigned
char int float double short long void
2、构造数据类型
struct union enum
3、数据存储类别
auto static extern register
4、数据优化
const volatile
5、九条基本语句
if else switch case break default while do for return continue goto
6、其它
typedef sizeof

一、基本数据类型

  1. unsigned:无符号 用于声明一个无符号的变量。范围为0~255
    unsigned char a ;//a的范围:0~255
  2. signed :有符号的 (可以省略不写)用于声明一个有符号的变量。
    signed char a ;//a的范围:-128~127
  3. char:字符型,用来声明一个字符形变量,占用一个字节空间
    char a ;
  4. int:整型,用来声明一个整形变量,ARM中占4个字节空间 ,在C51中占两个字节空间
    int a ;
  5. float:浮点型 ,用来声明一个浮点型变量,占用4个字节空间,最多能表示到7个有效数据位置。
    float a;
  6. double:双精度型,用来声明一个双精度实型变量,占用4个字节,最多能表示到15~16个有效数据
    double a;
  7. short: 短整型,用来声明一个短整型变量,C51和ARM占2个字节空间
    short a;
  8. long:长整形,用来声明一个长整形变量,ARM下占用4个字节。
    long a;
  9. void:空型,表示一个函数无返回值或者无形参
    void function (void);

二、构造数据类型

  1. struct用于声明一种结构体类型
		struct stu{
			char  gender;
			int   age;
			float score;
			struct stu *Next;
		};
		struct stu var;
  1. union用于声明一种共用体类型,该类型的变量所在空间的大小以其成员占最大的那个为准,存入该变量中的值以程序中最后存入的数值为当前值。
		union non{
			char gender;
			int  age;
			float score;
		};
		union non var;
  1. enum 用于声明一种枚举类型,规定枚举类型的变量,只能在限定的范围内取值,否则编译会出现警告(以起到数据安全保护的效果)
		enum em
		{a = 23,b,c,d = 56,e};//其中 b=24,c=25,e=57
		enum em var;

三、数据的存储类别

  1. auto:自动的(可省略),定义一个局部变量,默认为auto类型的,当它所在的函数调用结束时,释放内存,使用时分配内存,用完即释放
    auto char a;
  2. static:静态的变量,定义一个局部变量,该变量在定义是进行一次初始化,以后每次调用他所在的函数,其值都会保持上一次调用的结果,它所在的空间不会被释放,其数据存储在方法区。在第一次访问时创建,程序结束时销毁。被static修饰的全局变量,则只能在它所在的C源文件中使用,其他文件不能调用(内部全局变量)。被static修饰的函数 ,只能在该函数所在的C源文件中被调用,其他文件不能调用(内部函数)。
		static char a;
		static void function();
  1. extern :外部变量,当想要调用别的C源文件中的某一全局变量,可以使用该关键字在该文件中修饰声明该变量,即可调用(前提是该变量没有被static修饰),该类型的变量也是一直占着内存不释放。想要调用别的C源文件中的某一个函数,可以使用该关键字在该文件中修饰声明函数 ,即可调用,(前提是函数没有被static修饰)
		extern char var;
		extern void function();
  1. register : 寄存器的,被这个关键字修饰的变量,建议编译器将该变量在使用时放在CPU内部寄存器中,以提高执行效率。注意:该关键字只是“建议”,到底有没有将变量放到寄存器中无从得知。一般使用在循环次数比较多的地方。使用时分配内存,用完释放。
		register long i = 30000;

四、数据优化

  1. const : 常量的,被关键字const修饰声明的变量,其值不能被改变。即在声明该变量时必须要初始化该变量。 但a本身还是一个变量。
		const char a = 100;
		char arr[a];	 /*	试着声明一个长度为100的字符型数组,在ARM中
						可以使用常变量来声明数组长度在VC++编译环境中也
						可以 ,但在C51中不可以*/
		char *const p;//表示指针变量P不可改变,但他指向的地址中的内容可以改变。
		char const *p;const char *p;/*指针变量p可以改变,但他指向地址
										里面的值不能改变。*/
		const char *const p  //指针变量P不可变,指针指向地址里的值也不能改变。
  1. volatile :随时会改变的,被volatile修饰的变量或寄存器会意想不到的发生改变,①某些变量或寄存器可能受硬件影响;② 在多线程任务汇总,被其它线程修改(共享内存段);③一个在中断服务中使用到的全局变量;④编译器会对C程序进行优化。为了保证程序不被优化,保证CPU每次获得的数据都是最新的,(即提醒CPU每次都必须到内存中取出变量当前的值而不是去cache或者寄存器的备份 ),使用该关键字修饰。
		int *p;
		*P = 1;
		*p = 2;
		//在编译时,编译器会对上面程序进行优化,会直接优化成
		int *p;
		*p = 2;
		//为保证上面的语句不被优化,加volatile修饰变量,
		int * volatile p;

五、9条语句

四种结构

  1. 顺序结构: 0条
    声明语句、运算语句、赋值语句、
  2. 选择结构:2条
		//多选一
		if	-else if -else if ...else
		if(表达式1)
		{
			语句1;
		}
		else if (表达式2)
		{
			语句2;
		}
		else
		{
			语句n;
		}
		/*用法:顺序判断if后的表达式是否为真,若为真,则执行
		其下面{}中的语句,执行完之后,退出此多选一结构*/
		switch -case -break语句
		switch (变量)
		{
			case 常量1 :语句;...;break;
			case 常量2 :语句;...;break;
			case 常量3 :语句;...;break;
			default:语句;
		}
		/*用法:顺序判断“变量”是否与“常量”相等,
		如果相等,则执行该常量后的语句,遇到break跳出循环*/
		unsigned char i = 6;
		unsigned char dat;
		switch(i)
		{
			case 3:dat = 5;break;
			case 5:dat = 34;break;
			case 6:dat = 88;break;
			case 7:dat = 56;break;
			case 6:dat = 100;break;
			default :dat = 68;
		}
		/*如果少了break ,则顺序判断i的值与case后面的常量是否相等,如果
		相等则执行其后面的语句,以后不再判断再执行下面的每一条case后面
		的语句,直到default*/
  1. 循环结构 3条
    for循环
		for(语句1;语句2;语句3)
		{
			语句4;
			语句 ...;
		}
		/*用法: 语句1:条件初始化
				语句2:判断语句,判断条件是否成立
				语句3:修改条件语句
			先执行语句1,在进行对语句2的判断,如果成立则执行{}里的语句4...,
			再执行语句3,再判断语句2是否成立。当语句2不成立时结束循环*/

while 循环

		while(表达式)
		{
			语句;
			...;
		}
		/*
		用法:先判断表达式是否成立,如果成立则执行{}中的语句,执行完再次判断表达式
		是否依然成立,成立继续执行{},不成立则结束循环
		*/
		//死循环
		for(;;)
		while(1)
		

do - while 循环

		do{
			语句1;
			...;
		}while(表达式)
		/*
		用法:先执行{}中的语句,执行完之后,判断表达式是否成立,如果成立继续执行{},
		如果不成立则结束循环
		*/
  1. 转移结构 : 4条

break

		break // 用于跳出循环结构,仅能跳出一层循环结构、
		for(i=10;i>0;i--)
		{
			t = 10;
			while(t--)
			{
			dat++;
			if(dat == 3)
				break;//仅仅跳出while()结构
			}
		}

continue

		//用于终止本次循环,继续从下次循环开始
		//正式程序里不常用,仅用于调试程序
		char buf = 10;
		while(buf--)
		{
			a++;
			b++;
			continue;//遇到continue则结束这次循环
			d++;
			e++;
		}

goto

		goto 
		//无条件转移
		//一般不建议在大的程序中使用,会打乱程序顺序结构
		unsigned char dat = 10;
		while(dat--)
		{
			a++;
			b++;
	 Lable: c++;
			if(c == 3)
			goto Lable;
			d++;
		}

return

		return
		//用于函数返回
		//在函数调用时,遇到return即返回
		//如果需要函数返回某个值,在其后边加上返回值
		//返回值类型必须和函数类型一致
		void function()
		{
			char a,b;
			a++;
			return;//遇到return即返回到调用处
			b++;   //不会被执行
			return;//不会被执行
		}

六、其它

  1. typedef:类型重定义
		typedef unsigned char uchar;
		//用typedef重新定义 unsigned char
		#define unchar unsigned char
		//用 uchar 替换 unsigned char
		/*与宏定义的区别:
		typedef	是在编译阶段进行定义
		宏定义是在预编译处理阶段完成展开
		typedef是类型重定义,不是简单的替换
		宏定义只是简单地替换,并没有定义	
		*/
		typedef unsigned char *M;
		#define M unsigned char *
		M P1,P2;
		//对于typedef来说,P1是指针变量,P2也是
		//而宏定义来看,P1是指针变量,P2是普通变量

  1. sizeof 求类型所占的字节数
		int var = 10;
		char g;
		g = sizeof(var++);
		//g = 4;
		//var++没有执行
		//()里的内容是不会被执行的
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值