C语言关键字

C语言中的32个关键字

关键字作用
char声明字符型变量
short声明短整型变量
int声明整型变量
long声明长整型变量
float声明浮点型变量
double声明双精度变量
signed声明有符号类型变量
unsigned声明无符号类型变量
struct声明结构体变量
union声明联合数据类型
enum声明枚举类型
auto声明自动变量,缺省时编译器一般默认为auto
static声明静态变量
extern声明变量在其他文件中声明,引用变量
register声明寄存器变量
const声明只读变量
void声明函数无返回值或无参数,声明空类型指针
sizeof计算对象所占的内存空间大小
typedef给数据类型取别名
if条件语句
else条件语句的否认分支,与if联用
for一般循环语句
while循环语句的循环条件
do循环语句的循环体
goto无条件跳转语句
break跳出当前循环
continue结束此次循环,进入下一轮循环
return子程序返回语句,参数可带可不带
switch用于条件判断语句可以有多种条件
case条件分支
defaultswitch语句的最终分支
volatile说明程序在执行中可被隐含的改变

针对关键的功能作用可以分为以下四种类型:

第一类:定义变量类型:void、char、short、int、long、float、double、signed、unsigned;

第二类:构造类型:struct、union、enum、typedef;

第三类:存储与生命周期:auto、static、extern、register、const、volatile;

第四类:语句相关:if、else、for、while、do、switch、case、fault、goto、break、continue、return;

sizeof() 是一个判断数据类型或者表达式长度的运算符

static

说明:声明静态变量。
作用:
1)修饰变量:static可以修饰局部变量和全局变量,它们都存放在内部的静态区中。
A、静态全局变量:使得其作用域仅限于变量被定义的文件中,其它文件不论通过什么方式都不能访问。
B、静态局部变量:在某个函数体里面定义的静态局部变量,只能在本函数体被访问,即使同一个文件的其它函数也访问不了。 静态局部变量总存储在静态数据区,所以即使这个函数运行结束,这个静态局部变量的值不会被销毁,函数下次使用时仍然可以用到这个值,知道程序结束才释放。

2)修饰函数:用来修饰不能被其它文件访问的一个函数

例1、

#include<stdio.h>
static int i=0;
static int q=0;
int  func1()
{
	i=0;
	i++;
	return i;
}
int func2()
{
	q++;
	return q;
}
int func3()
{
	static int j = 0;
	j++;
	return j;
}
int func4(){
	int p = 0;
	p++;
	return p;
}
int main()
{
	int k = 0;
	for (k = 0; k < 10; k++)
	{
		printf("func1:%d func2:%d func3:%d func4:%d\n",func1(),func2(),func3(),func4());
	}
	return 0;
}

运行结果: 

 ​​​​​​​

对比func1和func2的运行结果:两者分别对静态全局变量i和q进行自增操作;但是func1中每次都对i赋值为0;func2中并无赋值操作q为全局静态变量所以每次的值都在自增;

对比func3和func4的运行结果:func3使用对局部静态变量j进行自增操作,func4对局部变量p进行自增操作;func3虽然调用10次,但是“static int j = 0”语句只被执行了一次,所以j等于10;func4每次执行完毕p对应内存中的值就被释放所以每次0自增后为1.

signed、unsigned

        signed修饰的整数,只用了去除最高位,剩下的15位来进行编码的,而最高位只是用来做标记(sign),标记整数的正负,0表示正,1表示负。所以对于signed的整数,的存储范围是(-2^15 to 2^15-1),也就是 -32768 到 +32767的整数。 
        unsigned修饰的整数,其16位全部用来编码,存储范围便是(0 to 2^16-1),即 0到 65535 的非负整数。所以呢 你可以声明 int a = 1,或者 int a = -1, 但是不可以声明 unsigned a = -1 。但是需要提到的一点是,不管整数的类型是signed 还是 unsigned,都用了16位来存储,也就是说16位全部用来存储数据 

Register

说明:这个关键字请求编译器尽可能的将变量存放在CPU内部的寄存器中,而不是通过内存寻址访问以提高效率。
register修饰变量必须是一个单个的值,并且其长度必须小于或等于整形的长度。
register修饰变量可能不存在内存中,所以不能用取地址运算符“&”来获取register变量的地址。

Volatile

只要变量可能被意外的修改,就需要把该变量声明为volatile。在实际应用中,只有三种类型数据可能被修改:
        1.外设寄存器地址映射;
        2.在中断服务程序中修改全局变量;
        3.在多线程、多任务应用中,全局变量被多个任务读写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值