c语言中在两个文件中命名了相同的变量名,在内存中会不会读取错误

c语言中在两个文件中命名了相同的变量名,在内存中会不会读取错误,第1张

如果在不同的c文件中定义了同名的全局变量,则它们会占用相同的内存空间,而且编译链接时不会报错!

这可以参考全局变量的内存初始化顺序,对于局部变量而言,内存分配的顺序和代码的顺序是一样的。全局变量就不一样了;一般的编译器,

(1) 对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配空间,

(2) 对于没有初始化的全局变量,因为不知道是定义还是声明,所以要在扫描完所有代码之后才能决定,这个时候编译器会读符号表,然后看哪些变量没有分配空间.

(3)不同源文件间全局变量的初始化顺序:对于全局变量而言,除了在同一个文件定义的全局对象的初始化 是按照定义次序来进行的之外,其他全局或静态变量之间的初始化次序没有任何保障的。

这是属于自定义函数和函数头

.c文件是由工程管理系统加入的,加入的时候要选择是哪个路径中的.c,这个不会混淆

.h文件由于事自定义的头,因此不用尖括号引用,一般用双引号;自定义头文件路径可以在工程设置中修改,也可以这样写(假定自定义头文件目录为c:\dir0,实际源文件目录为c:\dir0\dir1和c:\dir0\dir2):#include "dir1\a.h" 也可以写绝对路径 #include "c:\dir0\dir1\a.h"

是可以重名的,只不过局部变量可以覆盖全局的,就是在局部变量的范围内全局变量不起作用

局部会屏蔽全局。要用全局变量,需要使用 "::"

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些

编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那

个局部变量的作用域就在那个循环体内。

扩展资料

C语言中全局变量和局部变量的区别是他们的作用域不同,全局变量是整个C程序,局部变量是定义所在的大括号内,同一个作用域内不能定义两个同类型同名的变量,因为编译会报错。 

由1个或者多个C文件组成的工程中,可以定义和全局变量同名同类的局部变量,但是不提倡这样使用,因为此时变量的值和变量被调用的位置有关系。

使用全局变量时,需要先用extern关键字声明,全局函数也是用相同的关键字。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11703261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存