请稍侯

C语言中的变量常量及其在虚拟内存中的分配

04 December 2020

C语言中的变量常量及其在虚拟内存中的分配

  • 在C语言里,使用auto关键字声明自动变量,如果没有被声明为其他类型的变更 ,默认都是自动变量。(注意:auto关键字在C与C++里的用法不同,若编写C/C++兼容程序,最好不要使用auto作为存储类别说明符。)

  • 静态变量与自动变量的区别在于静在变量是在全局(静态)存储区内分配内存的单元(目标文件的.data段,未初始化的在.bss段),而自动变量则分配在动态存储区(栈区);只有通过mallocnew生成的变量分配在堆区。

  • 全局变(常)量与静态变(常)量都是存储在全局(静态)存储区(即.data段和.bss段中)。

  • static修饰的全局变量与函数不能在其它文件中访问,即使是extern外部声明也不可见。

  • extern可以将全局变量的作用域扩大到外部文件中。

      # 编译
      gcc -c a.c b.c
      # 链接
      gcc a.o b.o -o ab.out