C语言的修饰符 英文,C语言常用修饰符 - toolite_stone的个人空间 - OSCHINA - 中文开源技术交流社区...

前言

这两天在梳理自己C语言的知识,发现写了这么久的代码,居然所有的知识点都在自己的脑袋里。这可不好,万一老了呢。。。。

接下来的几天里,会以文字的形式,将这些知识整理出来,分享给大家。

想要看看英文版本的同学,可以详细阅读 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

C语言存储类别说明符

存在类别说明符 (storage-class-specifier)包含:typedef, extern, static, _Thread_local, auto, register。除了_Thread_local需要使用static或extern一起使用外,其他的说明都是可以单独使用的。

1. typedef

用于给某个数据类型定义一个新的名字。

如:

typedef int32 ac_int32;

typedef struct _student_st {

int age;

char* pName;

} student_st;

2. extern

引用另一个文件中的函数或全局变量。注意,这些函数和变量是不能被static修饰的。

如:

extern int otherInt;

3. static

被修饰的函数和变量,只能在当前的文件中使用。当static修改局部成员变量时,该变量只会被初始化一次,直到进程结束,才会被销毁。被static修饰的变量将会被保存在全局数据区的静态变量部分。

如:

static int glbInt;

4. _Thread_local (C++中会使用到)

5. auto

表示自动存储的临时变量,也用作自动匹配变量的数据类型。

如:

auto int var = 4;

auto var1 = 0;

6. register

寄存器变量,说明该变量的使用频率非常高,希望编译器尽量将它放到寄存器中。当然,编译器也可以将它忽略。

使用这个修饰符,需要注意:

变量需要是CPU能接受的类型,即单个值,长度小于整型。

只能用到局部变量或函数形参。

不能使用&来引用该变量的地址。

过量的寄存器变量不会对代码产生太大的影响,编译器是可以忽略的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值