C++全局变量声明和定义的问题.

int x=3,y=4; --全局变量

int main()
{
int x=3,y=4; --局部变量

}

两个相同类型相同名称的变量编译器居然通过了,那位大侠能告诉我这是为什么呢?

其实这就是作用域的范围,全局变量具有全局作用域。
我们测试一下:
int x=3,y=4;
int main()
{
int x=1,y=2;
printf("%d %d",x,y);
}
程序的输出是1 2,因为输出语句在main函数中,所以main函数中定义的变量(局部变量)就覆盖了全局变量,所以输出应该是 1 2.
再写一个程序测试一下:
int x=3,y=4;
int main()
{
printf("%d %d",x,y);
}
程序的输出是3,4, 这里main函数没有同名的变量,所以直接输出全局变量追问

是的. 但是为什么定义的两个变量名名称相同还能编译通过呢?在Java中是不行的,求解释.^_^

追答

第一,编译器完全能够根据作用域来判断当前使用的是哪个具体的变量。
第二,貌似java中所有的成员都得定义在类中,也就是其作用域及可见性只能通过public,private,protected,static来约束,和C++有点不同吧,要不你举个java的例子

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-12
嗯,简答的说:有几个规则,当有全局变量和局部变量的时候,
int x=3,y=4; --全局变量

int main()
{
int x=2,y=5; --局部变量
cout<<x<<y<<endl;
//这里输出的是局部变量;因为在这里全局变量不起作用了,局部变量屏蔽了全局变量
}

C\/C++怎么在某个函数中声明或定义全局变量?全局变量有没有这样使用的...
全局变量的定义只能在函数外部,不能在函数内部。当要使用其他文件里的定义的全局变量时,可以用关键字extern,格式是 [extern 类型 变量名;]希望对你有帮助。

变量的声明与定义有什么区别
简而言之,声明是告诉编译器有关变量的信息,而定义则是实际创建这个变量,包括为其分配内存和可能的初始化。一个变量可以被声明多次,但只能被定义一次,因为每个变量只能有一个具体的内存位置。在实际编程中,区分声明和定义是很重要的,因为这有助于我们更好地组织代码,避免重复定义导致的错误,并允许...

请教C++中对象或者变量的声明与定义有何不同??
已经说了,基本类型变量是声明和定义(初始化)是同时产生的,你的extern int a; 如果是直接这么写的那么就是直接定义和声明,如果是从别的地方extern来得,那么这句话就和声明和定义无关,这样的情况只是说把a扩展成全局来使用,就是实现这个功能,不会重新定义a ...

C++Builder全局变量是怎么定义的
其实不是声明变量,而是定义变量,这就意味着包含这个头文件的地方都会为变量分配空间,所以会有很多值。正确的方法是在头文件中使用extern进行声明,而在cpp中定义一次。还有一个方法就是在头文件中使用static 定义。

c++中的extern修饰符在变量的 声明和定义方面有什么作用
主要原因是C++和C程序编译完成后在目标代码中命名规则不同。4.对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。如果该变量定义多次,会有连接错误。extern用在变量声明中常常有这样一个作用,你在*.c文件中定义了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中...

VC+++ 全局变量的定义
针对全局变量,有两种连接,外部连接和内部连接,全局变量和函数默认为外部连接,即在所有文件中都是可见的,要在另一个文件中使用一个文件中定义的变量,就通过extern来说明,当在全局变量声明时说明static,则只在当前文件可见,此时就是内部连接,Static这个修饰符的作用:修饰全局和局部变量的不同:第...

关于C++全局变量和局部变量的问题!!
全局变量:一个源程序文件可以包含一个或若干个函数。在所有函数体外部定义的变量为全局变量(或外部变量),全局变量可以被本文件中其他所有的函数调用(使用)。有效作用范围:从定义该变量的位置开始到本程序文件的结束。在同一个文件中,若全局变量和局部变量同名,则在局部变量的作用范围内,全局变量不...

C++如何声明全局变量?
有两个类都需要使用共同的变量,将这些变量定义为全局变量。比如,res.h和res.cpp分别来声明和定义全局变量,类ProducerThread和ConsumerThread来使用全局变量。 1 2 3 4 5 6 7 8 \/***res.h声明全局变量***\/ #pragma once #include <QSemaphore> const int g_nDataSize = 1000; \/\/ 生产者生产的总...

vc中如何定义全局变量
在Visual C++(VC)中定义全局变量,可以将其放置在任意文件中,但需确保不在函数内部定义。这样做允许在程序的不同部分访问和使用该变量。为了在其他文件中访问全局变量,可以在定义变量的文件中使用`extern`关键字进行声明,表示这个变量在其他位置定义。或者,在App类中声明一个公有成员变量,确保所有类都...

c++全局变量extern
extern在C++中用作声明变量或函数在其他文件中被定义,帮助编译器在链接时查找定义。在不同文件共享变量和函数定义时,extern确保了代码的可移植性。例如,若文件a.cpp和b.cpp都需要使用全局变量g_var,可在a.cpp中定义g_var,并在b.cpp中使用extern声明g_var,实现文件间变量共享。同样,extern用于...

相似回答