c语言关于局部变量怎么应用到全局方法求助 - 爱问答

(爱问答)

c语言关于局部变量怎么应用到全局方法求助

c语言程序分成了好几部分,其中有几个部分都包含某一个参数,但是这个参数的求解只在其中的一个部分,如果定义一个全局变量的话,在计算过程中会将全局变量的初值赋给全过程,不赋初值计算会有错误。怎么才能把这个参数的计算值应用到计算全过程中?谢谢

#include <stdio.h> int a = 4;   //全局变量int f(int n){    int t = 0;    static int a = 5;   //局部静态变量    if( n%2 )    {        int a = 6;   // if作用域内局部变量        t += a++; // 此处的a是指if作用域内的局部变量,该变量在作用                        // 域结束后,生存周期结束。    }    else    {        int a = 7; // else作用域内局部变量        t += a++; // 此处的a是指else作用域内的局部变量                        // 作用域结束后,生存周期结束    }    return t+a++;  // 此外的a是指f函数作用域内的静态局部变量,                    // 每次f函数调用return后,此静态局部变量a自增1} int main ( void ){    int s=a, i=0; // 根据作用域,此处的a是指全局变量,所以s初始值为4    for(;i<2;i++) s+=f(i);    printf("%d ",s);    return 0;}

根据以上,分析运行流程:

由上可知,s初始值为4;

当i=0时,第一次循环,调用f()函数,由于0%2为0,会进入else后代码,此时t=0+7=7,调用f()函数的return时,会返回7+5=12,同时f()函数的静态局部变量a由5变为6(下次调用生效),s=4+12=16。

当i=1时,第二次循环,调用f()函数,由于1%2为1,会进入if后代码,此时t=0+6=6,调用f()函数的return时,会返回6+6=12,同时f()函数的静态局部变量a由6变为7(下次调用生效),s=16+12=28。

当i=2时,循环终止,打印s值为28。

 

关于最后的问题,是因为f()函数中if后面的变量a作用域只限制在if后的花括号内,代码退出该作用域后,该变量生存周期结束而被释放,return中使用的a是f()函数中定义的静态局部变量a,所以,不管前者如何赋值,对return中的a没有影响。


相关标签:c语言

下一篇:绝地求生刺激战场观看好友,好友会知道吗

上一篇:更新时出现已经登录了指定的参数错误是怎么回事?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?