在C语言中如果定义了外部变量,那么外部变量都存放在内存中的静态存储区吗

在C语言中如果定义了外部变量,那么外部变量都存放在内存中的静态存储区吗

问题描述:

在C语言中如果定义了外部变量,那么外部变量都存放在内存中的静态存储区吗,能不能具体解释一下外部变量、内部变量、静态存储区、动态存储区的关系

必要时买本 c++ primer(没有++) 英语版 原汁原味看一下

外部变量存放在全局区,静态外部变量才是在全局静态区。

所谓静态,就是一定会存在的而且会永恒存在、不会消失,这样的数据包括常量、常变量(const 变量)、静态变量、全局变量等,它们都存储在静态存储区。

动态的话,就是会变化的了。动态的区域,就是堆和栈。这个栈应该称作 call stack,上面会存放函数的返回地址、参数和局部变量。而堆放就是我们通过 new 算符和 malloc 函数分配得到的空间,这些都是手动获得的空间,也需要手动的释放。

概念性的专业术语。很多博客描述的很详细。可以参考看看。