C、C++存储类型关键字详解
存储类型关键字
auto
auto
是默认的存储类别关键字,它用于定义自动变量。- 自动变量的生命周期仅限于定义它们的代码块,当代码块执行结束时,它们会被销毁。
示例代码(记作代码1):
1 |
|
在上方代码1中,auto int x = 10;
和int x = 10;
是等效的:
这是因为 int x = 10;
默认就是一个自动变量,编译器会根据上下文自动识别它为自动变量。
同样,例如下方代码(记作代码2):
1 |
|
当你写 auto y = x;
时,编译器也会将 y
类型设置为 int
,因为 x
是 int
类型,所以 y
也被赋予了相同的类型。
C语言的类型系统会根据右侧表达式的类型来确定左侧变量的类型,这就是类型推断。
因此,在代码2中,y
被推断为 int
类型,与 x
相同。
extern
extern
用于声明一个全局变量,它表明该变量在当前文件中并没有被定义,而是在其他文件中定义的。- 这允许多个文件共享同一个全局变量,该变量可以被多个文件调用,并修改其值。
示例代码(extern
使用时,对应着多文件场景):
文件1.c:
1 |
|
文件2.c:
1 |
|
register
register
用于请求编译器将变量存储在CPU寄存器中,以加快对变量的访问速度。- 这是一个建议(编译阶段请求将register存储在CPU寄存器中),编译器可能会忽略它,特别是在如今的编译器中(因为如今的编译器已经非常智能,它们能够更好地管理寄存器分配,从而提高代码的性能,通常来说,如今的编译器比程序员更了解如何优化代码)。
示例代码:
1 |
|
static
static
用于改变变量的存储期和可见性。- 在函数内部使用
static
声明的变量具有持久的存储期,而在如今的使用static
声明的变量只在当前文件中可见。
示例代码:
1 |
|
如果上述代码不加static
:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 洛屿的小站!
评论