永发信息网

c语言,关于全局变量。

答案:4  悬赏:60  手机版
解决时间 2021-07-30 22:05
void add(int);
int num;

main()
{
int n=5;
add(n);
printf("%d 111\n",num);
system("pause");
}

void add(num)
{
num++;
printf("%d 222\n",num);
}


一个教程上说main()下的输出num值是6,add()下输入的num值也是6.

但是我自己在devc编译main()的num值输出之后却是0。 为什么呢,是我代码有问题吗?
最佳答案

定义全局变量的时候, 是会赋初值0的。。而且它具有全程作用域,适用于定义后的全部函数中。。


但是当全局变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用,如果要想用全局的那个变量的话,要使用作用域分辨符 ::



你的那个例子中,main函数中的num就是全局变量的num, 所以输出的是0;


add函数中(应该是void add(int num)吧??),形参中产生与全局变量同名的局部变量num,main函数传过去的实参为 5,num++,得num为6,所以输出是6....


值得一提的是。。。局部变量的值并不会改变全局变量的值。。因为虽然它们是同名···但它们却不是同一个变量··因为他们不会同时出现····

全部回答

答案是6,0吧!首先,程序开始都是从main函数进入的,进行到add(n)这句时,跳进add函数,该函数里,num是局部变量,它的值为add(n)里的n的值5传入,n,m一个实参,一个形参,m=5,所以num++后,add函数内的num值为6,下一条语句打印的num为全局变量,因为没赋初值,所以默认值为0,故输出直接是0.所以,最后的结果应该是

6 222

0

int num没贼初值吧

如 int num;

好久没接触C语言了 不知道对不对

刚把程序改成winform 应用程序

运行结果是 6 222 和 0

非专业回答,如有错误,请联系本人删除或修改:

形参与实参数据是单向传递,实参·数据传给形参。就是说,add执行时为num分配了新内存,在新内存内,num++,但在add执行结束后,分配的内存立刻被释放,num++没有传递给任何一个变量,所以main函数中的num为初始值。

void add(int); int num; main() { int n=5; add(n); printf("%d

...

void add(num)跟int num; void add(num)中的num是参数,num++;只对形参进行自加,并不改变原值n;你的全局变量跟形参一样,所以add中自加的是形参,而不是全局变量(尽量不要让全局参数跟形参名一样)。

main() { int n=5; add(n); printf("main:n=%d\n",n); printf("main:num=%d\n",num); system("pause"); }

void add(temp) { temp++; printf("add:num=%d\n",num); printf("add:temp=%d\n",temp); }

void add(int num) { num++; printf("%d 222\n",num); }

函数add中的num为局部变量,当全局变量和局部变量重名时,全局变量不可见,所以add函数没有改变全局变量的值,至于main中输出num的值为0,可能全局变量定义后,正好它地址里的值为0

要使全局变量在add中可见

可见

void add(int num)

改为void add(int other)即可

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
DNF鬼泣怎么连招连不起来
电脑网卡怎么用
DNF我的鬼剑士转职什么好?瞎子,鬼泣,红眼
本地连接变慢
国家规定的结婚年龄是多少?
给一份电脑组装的配置单。(游戏类型的)
90后的大学生是如何看待今后的生活?
女性健身软件哪个好用,哪个健身软件最好用
魏都区许昌中国民生银行(丽景苑社区支行)我想
我爱上了一个不该爱的人,我到底该不该放手,
用英文翻译(布朗先生来到中国寻找更美好的未
郊区佳木斯中通快递(佳西分部)我想知道这个在
candy可数吗?(糖果)
怎么练好下叉.和侧腿
谁能传个炽天使家族给我领!
推荐资讯
谁能邀请我开牧场的加我
处女天秤座最配什么星座?
召陵区漯河永超农机维修怎么去啊,谁知道地址
小时代2.0完结没?告一下下载地址
I hate someonewhochea tedme 的中文是什么。
永城市商丘永城市百花农贸市场地址在哪,我要
日常生活 平行四边形例子多一点(除了伸缩门
艾青感恩的诗歌有哪些,求赞美诗新编400首(红
福五鼠的五只老鼠叫什么名字
one might in 翻译?怎么理解?
DNF保密卡以前弄过,但又关了!原因和QQ连一
木樨园大卖场卖的手机质量怎么样?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?