C语言之关键字(一)auto,register,static,const的了解

 

可能很多向我这样的初学者都不知道C语言有32个关键字之多:auto,int,double,long,char,float,short,signed,unsigned,struct,union,enum,static,switch,case,default,break,

register,const,volatile,typedef,extern,return,void,continue,do,while,if,else,for,goto,sizeof.

定义和声明的最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。

1.最宽宏大量的关键字:auto,在缺省情况下,编译器默认所有变量都是auto

2.最快的关键字:register  这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。但是CPU的寄存器数量有限,所以我们只能定义少量的register变量。使用register修饰符的注意点:register变量可能不存在内存中,所以不能用取地址符&来获取register变量的地址。register变量必须是一个单个值,并且其长度应小于或等于整型的长度。

3.最名不符实的关键字:static 静态全局变量作用域是从定义之处开始,到文件结尾处结束静态局部变量在函数体里面定义的,只能在这个函数体里面使用,由于static修饰的变量总是在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时仍然能用到这个值。
静态函数:不是指存储方式,而是指对函数的作用域仅限于本文件,这样的话,不同的人编写函数时,不用担心自己的函数会与其他文件中的函数同名. 

4.const关键字也许该被替换为readonly:const修饰的是只读变量,const定义的只读变量在程序运行过程中只有一份备份(因为它是全局的只读变量,存放在静态区)。const修饰谁,谁就不能被改变。例如在修饰指针的时候

const int *p  //p可变,p指向的对象不可变

int const *p  //p可变,p指向的对象不可变

int *const p  //p不可变,p指向的对象可变

const int * const p  //p不可变,p指向的对象也不可变

记忆方法:

先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近,“近水楼台先得月”,离谁近就修饰谁。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值