标签列表
C语言中自动变量和全局变量的初始化
c
variables
initialization
3
3
如果我理解正确,C语言中的全局变量(位于数据段)会被初始化,而自动变量(位于栈中)则不会。或者说是反过来?
为什么会这样呢?编译器不初始化这两种类型的变量有什么好处?它会增加速度等方面的优势吗?
-
xyz
2
1
你可能会对这个问题感兴趣:
C语言:为什么未赋值的指针指向不可预测的内存而不是指向NULL?
- detly
作为参考,当前
C草案标准
(WG14/N1256)第6.7.8条款10涵盖了隐式初始化。
- outis
2
个回答
4
4
正如你所说,全局变量存储在数据段中,因此它们的值包含在最终可执行文件中,无论是初始化的值还是未初始化的值都没有性能差异。
另一方面,局部变量分配到堆栈中,在运行时设置,因此初始化它们会影响性能。
-
Peter Alexander
回答链接
1
1
你理解得没错,全局变量是被初始化的,而自动变量则不是。这是因为全局变量直接从程序二进制映像中加载,并且初始化是“免费”的,而自动变量则在堆栈上,需要运行代码来更改值和初始化它们(即:会影响性能)。
-
littleadv
回答链接
网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接
相关问题
46
在C语言中静态变量的初始化
3
C语言中的全局变量是自动变量吗?
6
C语言中静态全局变量和非静态全局变量的区别
13
C语言中,全局变量和#define有什么区别?
89
C语言中的共享全局变量
4
C语言中的静态变量和初始化
24
在C语言中初始化变量
7
C语言中的goto和自动变量初始化器
5
自动打印C语言中的结构和变量
4
C语言中同名的外部变量和全局变量