笔试真题 | C语言
C语言
1.static的用法
-
作用于函数局部变量
特点:初始化为0,运行一开始开辟内存,内存放在全局,增加了变量的存活时间
-
作用于全局函数
特点:静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可定义相同变量名,两者互不影响
- 作用于全局变量
特点:静态函数只能在声明它的文件中可见,其他文件不能引用该函数,其他文件函数名可相同,互不影响
2.volatile的用法
因为访问寄存器要比访问内存单元快的多,所以编译器一般都会做减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用volatile,则编译器将对所声明的语句进行优化。
简洁的说就是:volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。
面试常问:
①一个参数既可以是const还可以是volatile吗?
答:是的。一个例子是只读寄存器状态。它是volatile因为它可能被意向不到地改变,它是const因为程序不应该试图去修改它。
②一个指针可以是volatile吗?
答:是的。一个例子是当一个中断服务子程序修改指向一个buffer的指针时。
3.const的用法
-
const修饰变量
①修饰的变量可以认为只有只读属性
②在声明时必须对其进行初始化
-
const修饰指针变量
① int *const p; 该语句表示指向整形的常量指针,它不能在指向别的变量,但指向变量的值可以修改
② const int *p; 该语句表示指向整形常量的指针,它的指向可以修改,指向常量的值不能修改
③ int const *p; 该语句和②相同
④ const int * const p; 该语句表示指向整形常量的常量指针。既不能改变指向也不能改变指向的值
⑤ int const * c
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!