C语言中的变量常量及其在虚拟内存中的分配
04 December 2020
C语言中的变量常量及其在虚拟内存中的分配
-
在C语言里,使用
auto
关键字声明自动变量,如果没有被声明为其他类型的变更 ,默认都是自动变量。(注意:auto
关键字在C与C++里的用法不同,若编写C/C++兼容程序,最好不要使用auto
作为存储类别说明符。) -
静态变量与自动变量的区别在于静在变量是在全局(静态)存储区内分配内存的单元(目标文件的.data段,未初始化的在.bss段),而自动变量则分配在动态存储区(栈区);只有通过
malloc
或new
生成的变量分配在堆区。 -
全局变(常)量与静态变(常)量都是存储在全局(静态)存储区(即.data段和.bss段中)。
-
static修饰的全局变量与函数不能在其它文件中访问,即使是
extern
外部声明也不可见。 -
extern
可以将全局变量的作用域扩大到外部文件中。# 编译 gcc -c a.c b.c # 链接 gcc a.o b.o -o ab.out