可以在函数里再次定义全局变量吗?
答案:5 悬赏:80 手机版
解决时间 2021-02-20 06:16
- 提问者网友:孤凫
- 2021-02-19 09:08
可以在函数里再次定义全局变量吗?
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-02-19 09:59
可以
第一次定义的是全局变量,第二次定义的是局部变量,局部变量只在定义的当前作用域(可以为一个循环语句或一个局部函数)有效,在该有效区域内,局部变量会覆盖掉前面定义的全局变量。是不会受影响的,同时,外部的全局变量也是有效的。全局变量只有在整个函数关闭时才失效,而局部变量在该作用域完成后就失效并释放出缓存。
第一次定义的是全局变量,第二次定义的是局部变量,局部变量只在定义的当前作用域(可以为一个循环语句或一个局部函数)有效,在该有效区域内,局部变量会覆盖掉前面定义的全局变量。是不会受影响的,同时,外部的全局变量也是有效的。全局变量只有在整个函数关闭时才失效,而局部变量在该作用域完成后就失效并释放出缓存。
全部回答
- 1楼网友:旧脸谱
- 2021-02-19 13:08
那这个应该是局部的吧
- 2楼网友:话散在刀尖上
- 2021-02-19 12:14
这个问题问的好,其实你要分清楚变量的存放的位置(也就是作用域的问题)。全局变量是在程序一开始就定义的变量,可以再整个程序运行过程中任意的使用(非错误使用)。全局变量一般放在程序区域。局部变量则放在栈中,也就是只适合{}(大括号)封装的函数使用。所以程序在运行时先检测栈的变量,而后检测程序变量。由此变量定义可以重复定义。但是不能定义相同的局部变量或者是相同的全局变量。
- 3楼网友:猎心人
- 2021-02-19 11:50
再定义一次,这个就变成了函数内的局部变量,而且会在该函数内覆盖对应的全局函数。
- 4楼网友:舍身薄凉客
- 2021-02-19 11:29
当然可以,对于主函数中的b与f1()函数中的b是不一样的,意义也不一样,代表的也不一样。你可在二个函数中都定义成b,也可以不一样,结果是一样的。但是不要在同一个函数中定义二个一样的变量就可以了,b只是一个名称而已,就像我们的名字都有重名一样,但是重名的人却是不一样的。所以你不要太纠结着这个,以后记住可以这样用就好了。不是任何事情都可以找到理由的。
至于下面他们所说的关于全局变量:
如果static和extern都没有,表示定义一个全局变量,其作用域限制在从定义开始到当前文件结尾。
static的作用是将全局变量的作用域限制在从定义开始到当前文件结尾,且其他文件不可以用extern来让这个变量可见。
extern的作用是声明一个已经在别处定义了的全局变量,它不是重新定义新的全局变量,而是起到扩展全局变量作用域的作用。
a.c:
int i; //定义i变量,且可用extern去扩展它的范围
static int j; //定义j变量,用static限定j只能在本文件内使用
b.c
extern int i; //正确,将i的作用域延伸到b.c中
extern int j; //错误,因为j在定义时被static限定
至于下面他们所说的关于全局变量:
如果static和extern都没有,表示定义一个全局变量,其作用域限制在从定义开始到当前文件结尾。
static的作用是将全局变量的作用域限制在从定义开始到当前文件结尾,且其他文件不可以用extern来让这个变量可见。
extern的作用是声明一个已经在别处定义了的全局变量,它不是重新定义新的全局变量,而是起到扩展全局变量作用域的作用。
a.c:
int i; //定义i变量,且可用extern去扩展它的范围
static int j; //定义j变量,用static限定j只能在本文件内使用
b.c
extern int i; //正确,将i的作用域延伸到b.c中
extern int j; //错误,因为j在定义时被static限定
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯