笔试真题 | C关键词的描述
C关键词的描述
const | 编译时分配,只读 | 修饰常量,指针 |
static | 编译时分配空间,静态全局变量 | 修饰变量,函数 |
volatile | 编译时不优化:从内存中取值,不是寄存器中 | 多线程访问一个全局变量时 |
sizeof | 编译时:计算 | 计算类型占用的空间大小 |
strlen | 运行时:计算 | 计算字符串的长度,不是类型占内存的大小 |
assert | 运行时:断言--是宏,不是函数; | 如果条件错误,则终止程序执行; |
extern | 编译时:扩展声明 | 声明全局变量/函数; |
Union | 共享内存空间,任意时刻只有一个数据成员可以有值 | 计算内存字节的空间时,以最大值为准 |
typedef | 运行时:类型重定义..可以重定义类型 | 定义函数指针 |
#define | 预编译时:宏定义 | 定义频繁使用的短小函数,在预编译的时候直接替换; |
- const 与 #define相比?
- const 常量有数据类型,而宏常量没有数据类型
- 编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误
- 集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
- inline和#define对比
- inline代码放入预编译器符号表中,高效;它是个真正的函数,调用时有严格的参数检测。
const : 只读
- 被const修饰的就只能读:常整形数,常指针;
- const修饰的变量为只读变量,定义一个const类型的变量时必须完成初始化
Const int a; // a是一个常量整形,值不能修改
int const a; // 同上
const int *a; // a是一个**指向常整型数的指针**;整型数是不可修改的,但指针可以
int const *a; //同上
int * const a; // a **指向整型数的常指针**;指针指向的整型数是可以修改的,但指针是不可修改
const int * const a;
int const * const a //a是一个**指向常整型数的常指针**;指针指向的整型数是不可修改的,同时指针也是不可修改的
- const的作用?
- 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。
- 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
- 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
ARM/Linux嵌入式真题 文章被收录于专栏
让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!