c语言全局变量问题。 现有2个文件,被放在同一个工程中。如果在两个文件的函数外部定义同名的变量,

c语言全局变量问题。

现有2个文件,被放在同一个工程中。如果在两个文件的函数外部定义同名的变量,比如:都在函数外定义int a=1;是否正确?为什么?

若两边都初始化了,那是定义,就是重定义了,逐文件编译时无错,但链接时会报错。
若只有一边或两边都未初始化,vs.net及Devc++中实测这是可行的,编译器会把其中一处处理成定义,其他处认作声明。
其实还可在不同文件中定义同名但类型不同的变量,不信可试试。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-08
这样定义,在编译时,会报重复定义变量a! 未加修饰说明的全局变量,其作用范围为整个工程!

修改如下:
在变量定义前,增加 static说明,仅让该全局变量在 定义所在的文件可见。
stctic int a=1 ;本回答被提问者和网友采纳

...现有2个文件,被放在同一个工程中。如果在两个文件的函数外部定义同名...
若只有一边或两边都未初始化,vs.net及Devc++中实测这是可行的,编译器会把其中一处处理成定义,其他处认作声明。其实还可在不同文件中定义同名但类型不同的变量,不信可试试。

C语言如何在两个文件中访问同一个全局变量
建立一个头文件, 在头文件中声明变量 extern <type> ;表示在外部链接该变量.变量则可以在任意源文件中定义.

c语言中如何声明一个全局变量,在两个.c文件中使用
在test.c中直接使用printf()打印的,那如果正常应该怎么去声明一个全局变量在两个文件中使用,并且这两个.c文件是两个线程,也就是说main.c中的全局a变量会直接影响到test.c,test.c中一直在检查a的值,满足条件则运行相应的功能,说具体点,谢谢~~~我就接着这里回答了啊~~~如果是两个线程同时...

关于C语言中变量在两个.C文件中的调用问题
方案1:在一个文件中定义全局变量“类型 tmp;”,注意是全局变量。另一个文件全局变量的位置使用“extend 类型 tmp;”。方案2:把hal.c文件里的函数参数加一个指向tmp的指针,tmp在main中,在hal.c里的文件使用tmp时,把地址传过去就行了。例如:mian(){ char tmp;...} function(&tmp;...;.....

请教一个C语言全局变量的问题,一个工程中有两个文件1.c和2.c,具体请...
在2.c中定义的 a 是一个未经初始化的全局变量,放在bss段,当程序加载到内存执行时,会自动初始化为0.

c语言中在两个文件中命名了相同的变量名,在内存中会不会读取错误_百度...
如果在不同的c文件中定义了同名的全局变量,则它们会占用相同的内存空间,而且编译链接时不会报错!这可以参考全局变量的内存初始化顺序,对于局部变量而言,内存分配的顺序和代码的顺序是一样的。全局变量就不一样了;一般的编译器,(1) 对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配...

c语言全局变量和局部变量题目?
C 一. 局部变量&全局变量 1 局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。2 全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。目的:增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个...

关于C语言全局变量与局部变量的问题.
在括号体里{}定义的是局部变量,它的生命周期是该块结束。局部变量需要自己初始化,并且位于堆栈中。如果用static前缀,如在源文件开头的话是本原文件的全局变量,如果在所有函数前定义不加static的话就是全局变量。 --- 这个静态的非常复杂,静态全局和全局和局部都不一样,静态全局实际上生命周期不同...

c语言求教
详情请查看视频回答

C语言中全局变量的作用范围?及全局变量和extern定义变量的区别?
全局变量是在本文件中所有函数都可以使用的变量,保存在静态存储区,如果要在别的文件中使用这个变量需要加上extern来声明,这个变量是在别的文件中定义的全局变量,局部变量不能在别的文件中用extern声明

相似回答