1.extern和static的区别,什么情况用前者,什么情况用后者
- extern用于声明引用其他文件中定义的全局变量或函数。并不分配内存空间。
- static用于限定变量、函数或类的作用域,使其仅在当前源文件中可见或保持静态特性。
- 在函数内部,使用static关键字修饰一个局部变量时,该变量在函数调用结束后仍然保持其值,具有静态存储期。
- 在类中,使用static关键字声明一个静态成员变量或静态成员函数,它们与类的实例无关,可通过类名直接访问。
2.全局变量是否可以被定义在多个.c文件中
全局变量可以被定义在多个.c文件中,但是需要使用关键字extern进行声明。这样可以将全局变量的定义和声明分离,从而避免重复定义而引起的冲突。
3.volatile是什么
volatile关键字用于标记变量为易变的,告诉编译器不要对其进行优化,确保每次访问都从内存中读取最新的值,以及对该变量的写操作立即写入内存。这在多线程、并行程序、硬件寄存器等场景下非常有用。
4.explicit(显式)关键字
在C++中,explicit 是一个关键字,用于修饰单参数构造函数,用于禁止隐式类型转换。当使用 explicit 关键字修饰构造函数时,该构造函数只能用于显式地创建对象,而不能通过隐式的类型转换进行对象的创建或初始化。