c – 全局变量0初始化罚分
发布时间:2020-12-16 05:47:04 所属栏目:百科 来源:网络整理
导读:这是一个非常简单的问题: 0初始化全局变量和静态变量在运行时是否具有任何性能损失(尽管非常小)? 解决方法 不,由于C(和C)标准表示所有未被程序员初始化的全局/静态变量必须初始化为零.这些变量被放置在一个名为.bss的特殊段中.在调用main()之前,它们被初始
这是一个非常简单的问题:
0初始化全局变量和静态变量在运行时是否具有任何性能损失(尽管非常小)? 解决方法
不,由于C(和C)标准表示所有未被程序员初始化的全局/静态变量必须初始化为零.这些变量被放置在一个名为.bss的特殊段中.在调用main()之前,它们被初始化为零.
如果你明确地初始化你的全局/静态,而是初始化你的全局/静态,但是值为0,那么编译器就足够聪明才能实现这一点,并且仍然放在bss段中. 您可以通过以下示例为您自己测试: #include <stdio.h> static int uninit; static int init_zero=0; static int init_one=1; int main (void) { printf("%pn",&uninit); printf("%pn",&init_zero); printf("%pn",&init_one); return 0; } 在这个例子中,uninit和init_zero变量将在相邻的存储器地址(可能彼此相距4个字节)结束,因为它们都在.bss段中.但是init_one变量将完全在其他地方,因为它被分配在.data段中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |