C/C++常见笔试面试题之常考关键字
1.描述volatile的作用
答:volatile主要是用来指示编译器不要对自己修饰的对象执行优化,警告编译器被修饰的变量可能被出乎意料的修改。volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知因素更改,比如:操作系统、硬件或者其他线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再执行优化,从而可以提供对特殊地质的稳定访问。对于一般情况下,变量可能被优化存储在寄存器中,最近的下次需要使用时直接读取寄存器即可,但是这个过程中,该变量所在的内存地址存储的变量可能已经被外部改变,如操作系统、硬件等。而volatile修饰的变量就不会被优化存储在寄存器中,而是每次直接读取内存中的最新值。
2.const关键字有哪些用途,它和static有哪些区别?
答:对于const关键字,它主要是用来定义一个只读变量。 const关键字至少有下列n个作用:
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
对于static关键字,则是用于声明一个具有全局生命周期的静态变量。且该值只可以被初始化一次,但可以被修改。static关键字至少有下列n个作用:
(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)限制