C语言中几个关键字的作用(static、extern、const、register、auto、typedef)

1.register
修饰经常被访问的变量,它所修饰的变量,请求编译器的尽可能的将变量保存在cpu的寄存器中。这样有助于减少访存的时间
有助于程序的效率。
它所修饰的变量不能用&地址,因为&这个是取的是内存空间的的地址,但是register 修饰的的变量保存在寄存器里面。
还有register只能修饰cpu能够接受的类型,例如cpu是不能进行浮点类型的计算。
register修饰的是局部变量不能修饰全局变量,因为只有这个进程知道这个变量的在哪里保存着,而其它的进程不知这个
变量保存的地方。
2.static
static不仅可以修饰变量还能修饰函数
修饰变量的时候,能修饰局部变量和全局变量。
修饰局部的变量,主要是为延长变量的生命的周期,需要延长生命周期的的变量不定义成全局变量,这是因为全局变量谁都
可以访问,容易被修改。
修饰全局变量的时候,使这个全局变量只能在这个文件中使用,也有助于其他文件对于这个变量名重新定义。
修饰函数的时候,也是是这个函数只能在本文件里面调用,其它文件不能调用。
被static修饰的变量保存在内存的数据段中的data段里面,只有在程序结束的时候,空间才会释放。
3.const
const修饰的变量名,是只读变量,
什么是只读变量:
const int num = 5;
num = 6;//这是错误的,
int *p = #
*p = 6;
这样是可以的,所以constz修饰的变量只是不能通过变量名字来改变其值,但是空间里面的值是可以被改变的
const int *p;
int * const p;
这两个是不一样的,一个是*p不能被改变,下面一个是p不能被改变。(就近原则)
const主要的用途是函数传参的时候,修饰形参的。因为在函数传参的时候,容易照成错误的通过修改的形参的值从而来
修改到实参的值。
举个例子:strcpy这个函数 函数的声明  char * strcpy(char *dest,const char *src );这个函数只需要将src字符串
拷贝给dest就好了,只需要只读,不需要改变,一旦在函数在定义的时候,一旦改变了*src,那么编译器会直接的报错。
防止在赋值的时候,做了其它的操作修改原来的字符串。
4.extern
extern int count;
这个含义是说明count在其它的文件里面定义过,再用extern的时候需要标明其变量的数据的类型;
extern也可以修饰函数,也需要标明函数返回值,以及参数的类型。
5.tpyedef
是帮一个复杂的声明定义取一个简单的名字(简单不失越短越好,有时候起到一定的注释代码的作用,可以取多个名字)
,可以理解为取别名,
俗一点的说,你大名叫上官阳阳,但是人家里面,家里人叫你的小名阳阳,同学有时候叫你啊阳,代表的是同一个人。
主要的好处:
1.提高了代码的移植性。例如你在一个很长的代码里面多次用到unsigned char 取名字为Char ,突然有一天需要变成
signed char的时候,只需要,将typedef unsigned char  Char,改为typedef signed char  Char
2.方便在编程中起名字的话,起到一个注释的作用(一个声明定义可以取多个名字)
3.方便简化变量的定义,例如一个结构体,你每次用它需要两个单词,但是typedef以后为一个单词。
注意一下,toyedef后面需要加分号,#define后面不需要加分号,不要搞混了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值