C语言关于全局变量和局部变量的问题

#include<stdio.h>intb=1;intfun(int*a){intb=0;b=b+a[0];returnb;}voidmain(){inta[]={1,2... #include<stdio.h> int b=1; int fun(int *a) { int b=0; b=b+a[0]; return b; } void main() { int a[]={1,2,3,4,5,6),i; for(i=0;i<2;i++) {b=b+fun(a+i); printf("%d",b); } } 程序运行结果为什么是2 4 若将函数fun中的定义“int b=0;"去掉,则程序的运行结果为什么为4 12 展开
 我来答
贰熙汤欣合
2019-07-04 · TA获得超过4585个赞
知道大有可为答主
回答量:3078
采纳率:32%
帮助的人:196万
展开全部
“int
b=0;"去掉时,int
b=1;b是在任何函数(包括主函数)的外部定义的,属于全局变量,所以任何函数程序运行到这一行时给它分配了内存空间,进而所有函数都可以使用此变量,函数fun()函数对b的每一次累加值都被保存下来。“int
b=0;"不去掉时,int
b=1;b全局变量,“int
b=0;"b局部变量,由于程序运行使用变量的就近原则,则函数fun()使用局部变量b,局部变量在函数调用完成时释放给局部变量分配的内存,即b的值在下一次调用函数是认为初始值0。就近原则同理,主函数中b则是全局变量b=1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式