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

时间:2022-12-12 16:26:13
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};

10 个解决方案

#1


你是没看书吧

#2


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

#3


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

#4


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

#5


我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给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函数,是这样吗

#6


引用 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函数,是……


绝对是

#7


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

#8


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


那是编译完后的事情

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

#9


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

那是编译完后的事情

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


就是的,楼主把编译器当神器了,每个编译器要有自己的编译规则。
VC使用变量的规则,至少是你在使用变量之前要让它知道到哪里去找到这个变量。
如果你在使用之前都没有声明这个变量,那我请问你下,你想让编译器怎么操作?

#10


明白了,多谢大家

#1


你是没看书吧

#2


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

#3


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

#4


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

#5


我是想知道,全局变量是不是在程序运行时,先执行分配空间。这里,先给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函数,是这样吗

#6


引用 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函数,是……


绝对是

#7


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

#8


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


那是编译完后的事情

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

#9


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

那是编译完后的事情

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


就是的,楼主把编译器当神器了,每个编译器要有自己的编译规则。
VC使用变量的规则,至少是你在使用变量之前要让它知道到哪里去找到这个变量。
如果你在使用之前都没有声明这个变量,那我请问你下,你想让编译器怎么操作?

#10


明白了,多谢大家