笔试真题 | 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%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务