c中的关键字

一、register

作用:请求编译器尽可能的将变量存在CPU内部寄存器中,一般的变量存在内存中,当需要时CPU再从内存中把它抓取到CPU中,使用register把它存在CPU中省去了CPU从内存中抓取数据的时间,提高运行效率。


注意:1、尽可能,因为CPU内存有限,不可能全放在里面,一般把频繁使用的变量放在里面,如循环变量。

            2、register只能修饰局部变量,不能修饰 全局变量和函数。

            3、register修饰的变量不能使用取地址符获取地址,因为它保存在CPU里,不在内存中。

            4、register修饰的变量一定是CPU接受的类型。


二、static

static既能修饰变量也能修饰函数,修饰的数据保存在全局数据区的静态数据区。


作用:1、被static修饰的局部变量,延长了生存周期,程序结束后才会释放。

             2、被static修饰的全局变量,只能在本文件中使用,不能在其它文件中访问。

             3、被static修饰的函数,只能在本文件中调用,不能被其它文件调用。


三、extern


作用:外部声明,调用在其它文件中定义的变量。


使用形式:extern int num  声明要加类型。


四、const


作用:修饰一个变量变为只读,通常用作函数形参。


例:

const num = 5;


不能再通过变量名去修改num对应空间的值,但通过其他方法还是可以修改的。


如:

int *p = #

(*p)++;


例:

const int *p = #

三个运算

1、num++;

2、p++;

3、(*p)++;


解:3式可以成功,1、2两式不能成功。const向右距离*p最近,所以*p是可以修改的。


五、typedef


作用:重定义


特殊:定义函数指针

typedef int(*P_FUN)(int);

P_FUN p_func;


六、volatile


七、define

作用:定义宏。


特殊:

函数式宏定义:#define MAX(a,b) a > b ? a : b


宏函数与自定义函数区别:

宏的执行速度快,省去了分配空间和释放栈帧、传参、传返回值等一系列操作,适用于简短且被频繁调用的函数,是以编译时间换空间的典例。


#ifndef

#define

#endif

可以防止因头文件相互包含带来的重复定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值