c的几个关键字

面试常用:c关键字
static 静态的
1 定义一个局部变量,该变量在定义时只进行一次初始化,以后每次调用它所在的函数,其值都会保持上一次调用的结果
它所在的空间不会被释放。
2 被static修饰的全局变量,则只能在它所在的c源文件中使用,其他文件不能调用(内部全局变量)
3 被static修饰的函数,只能在该函数所在的c源文件中被调用,其它文件不能调用(内部函数)
const 常变量:被const关键字声明的变量,其值不能被改变
char *const p; //指针变量p不可改变,但是它指向的地址里面的值可变
char comst *p; const char *p; //指针变量p可以改变,但是他所指向的地址里面的值不能改变
const char * const p; //p的地址不可改变,里面的值也不能改变
volatile :随时会改变的 被volatile修饰的变量或寄存器会意想不到的发生改变
1 某些变量或寄存器(如状态寄存器)可能会受硬件影响
2在多线程任务中,被其它线程修改(共享内存段)
3一个在中断服务中使用到的全局变量
4编译器会对c程序进行优化
为了保证程序不被优化,保证cpu取到的数据是最新的(即提醒cpu每次都必须到内存中取出变量
当前的值而不是取出cache或者寄存器中的备份),使用该关键字修饰,如
int *p;
*p=1 ; *p=2; //编译时,编译器会对语句进行优化,会直接优化为
int *p; *p=2; //为了保证上面的语句不被优化,加volatile修饰变量:
int * volatile p;
extern :外部的
1 想要调用别的c源文件中的某一个全局变量,可以使用该关键字在该文件中修饰声明该变量即可调用(前提是该变量没有被static修饰)
该类型的变量也是一直占着内存不释放
2 想要调用别的c源文件中的某一个函数,可以使用该关键字在该文件中修饰声明该函数即可调用(前提是该函数没有被tatic修饰)
如:extern char var; extern void fun();
register :寄存器的
被这个关键字修饰的变量,建议编译器将该变量在使用时放到cpu内部寄存器中,以提高执行效率
注意:该关键字只是建议,到底有没有将变量放到寄存器无从得知。一般使用在循环次数比较多的地方
在使用时才分配内存,用完即释放
register long i=3000

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值