+ -
当前位置:首页 → 问答吧 → main()函数外定义的变量不是全局变量吗?

main()函数外定义的变量不是全局变量吗?

时间:2011-12-15

来源:互联网

main()函数外定义的变量不是全局变量吗?那么全局变量是不是在整个文件可见,全局变量不是应该最早被初始化,最早被执行吗,那么为什么下面这个x[3]是全局变量,但是main函数中还要加一个extern ?还有,是不是先对a初始化,而后再执行对x[3]的初始化。

double a;
main()
{
  extern double x[3];
  for(int i=0;i<3;i++)
  a=a+x[i];
}
double x[3]={1.1,2.0,3.9};

作者: longlong2235   发布时间: 2011-12-15

你是没看书吧

作者: yuegeman   发布时间: 2011-12-15

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

作者: longlong2235   发布时间: 2011-12-15

1. a是全局变量,在哪里初始化都可以,先后由代码决定
2. x[3]也是全局变量,但不是在main里定义的,是在别的文件里定义的,这里要用,所以声明一下。

作者: zero_226   发布时间: 2011-12-15

全局变量是定义在函数外和类外的变量,与main()函数没有很大联系。

作者: mougaidong   发布时间: 2011-12-15

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

作者: longlong2235   发布时间: 2011-12-15

引用 5 楼 longlong2235 的回复:

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是这样吗

我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给double a;
分配空间,然后是double x[3]={1.1,2.0,3.9};分配空间,而后再执行main函数,是……


绝对是

作者: mougaidong   发布时间: 2011-12-15

可以确定的是全局变量在进入main函数之前被初始化,而多个全局变量的初始化顺序c/c++木有指定。

作者: Demon__Hunter   发布时间: 2011-12-15

引用楼主 longlong2235 的回复:全局变量不是应该最早被初始化,最早被执行吗,那么为什么下面这个x[3]是全局变量,但是main函数中还要加一个extern ?


那是编译完后的事情

编译器能力有限,在编译的时候,你如果不做前置声明,写在后边的符号,在前面是不知道的

作者: yisikaipu   发布时间: 2011-12-15