c语言,关于全局变量。拜托了各位 谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言,关于全局变量。拜托了各位 谢谢相关的知识,希望对你有一定的参考价值。
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.... 值得一提的是。。。局部变量的值并不会改变全局变量的值。。因为虽然它们是同名···但它们却不是同一个变量··因为他们不会同时出现···· 参考技术A 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)即可本回答被提问者采纳以上是关于c语言,关于全局变量。拜托了各位 谢谢的主要内容,如果未能解决你的问题,请参考以下文章
单片机Keil C51 C语言多文件如何使用全局位变量?跪拜!!