C语言——关键字(补充)

static: 修饰变量,变量的空间会在静态区内分配空间。
1)当修饰全局变量时,该变量不会在其他文件中被extern关键字调用。
2)当修饰函数时,也起到相同的作用。
换句话来说,static改变了变量函数的作用域,只能在本文件中起到作用。
3)当修饰局部变量时,改变了变量的生命周期,不会在一次调用函数之后就清空。任会保存变量的值。

extern:修饰变量,表示在其他文件中该变量已经被定义过了。告诉编辑器,该变量已经在外部文件中定义过,无需再为此变量分配额外的空间。

const:修饰变量。修饰的变量是无法被正常修改的,除非一些特殊的方法(如通过地址修改)。
const int * p:const在这里修饰的是p,表示p的内容,也就是该地址存放的内容不会改变。
int *const p:去掉int *,const修饰的是p,p表示的地址不能改变,但是该地址存放的内容是可以改变的。

auto:自动变量,在c代码中会出现大量的函数模块,在这些函数模块中声明的局部变量,就被成为自动变量。他们会被存储在内存栈上进行分配。这样可以很大程度上的节约空间。

register:被register修饰的变量会被作为一个寄存器变量。当某个变量需要被频繁调用的时候,就可以使用register关键字。很大程度上提高了效率。
注:
1)不能对寄存器变量进行取地址,因为他们没有内存地址。
2)他们的长度应该小于等于寄存器的长度,而且他们的类型必须是cpu所能接收的类型。
3)尽量申明少的寄存器变量。

volatile:一旦申明变量为volatile。那么,使用到该函数时,CPU将每次都会从内存中读取该变量的数据。某些情况下,为了提高效率,cpu是不会读取内存,而直接进行一些类似赋值的操作。

typedef:给数据类型定义一个简易的新名字,或者简化一些比较复杂的类型申明。
typedef struct name na;
typedef int (p) (void);
上面是使用typedef化简结构名和化简函数名的形式。name 表示的是struct定义的结构名,而na是化简后的名字,可以使用na a;的形式来使用。a就表示的是na结构类型的,像这样,一旦需要大量该结构体类型的变量,就很方便了。
第二个,p定义了一个指针,该指针指向的是一个任意形参,返回类型是int的函数。也就是函数指针。因为函数名表示就是地址,所以完全可以使用该模式来引用该类型的函数。引用的格式就是p = 函数名,p();**但是切记,定义函数指针p的类型必须和函数的类型一致。
*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值