关于C/C++中全局变量的初始化问题的深入思考
作者:网络转载 发布时间:[ 2012/10/25 10:04:25 ] 推荐标签:
同理:对于结构体全局变量
struct A
{
int a ;
} sTest;
int main(void)
{
return sTest.a+3 ;
}
函数也返回3。
实验结论:
在C语言中,全局变量是在编译期完成初始化的。
(在本实验中我们没有使用I/O函数把结果打印出来,因为I/O函数的调用之前必须要初始化内存中的某堆空间,而这个工作是由main函数之前的mainCRTStartup函数来做的。而我们设置让编译器跳过这个函数,故会在运行时出错。)
实验二:
C++语言环境下
实验准备:
class A
{
public:
int a ;
A(){a=10;}
~A(){}
} ;
A cTest ;
int main(void)
{
return cTest.a ;
}
结果预测:
这样,如果函数返回的是0,则说明此全局变量是在编译期被初始化为0了,如果函数返回的是其它数字,则说明此全局变量是在程序运行时,main函数运行前进行的初始化。
实验结果:
在编译器中设置入口函数为main,主函数返回一个其他值
在编译器中设置入口函数为默认,主函数返回值为10
实验结论:
在C++中,类(class)的全局变量是在程序运行期,main函数开始之前,调用类的构造函数完成初始化的。
同理:
把C中的代码放到C++下实验
int a ;
int main(void)
{
return a+3 ;
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11