900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c语言自动变量与静态变量 C语言的中的静态变量和局部变量(自动变量)

c语言自动变量与静态变量 C语言的中的静态变量和局部变量(自动变量)

时间:2020-08-20 19:04:41

相关推荐

c语言自动变量与静态变量 C语言的中的静态变量和局部变量(自动变量)

#include

int a=1;

int f(int c)

{

static int a=2;

c=c+1;

return (a++)+c;

}

int main()

{

int i,k=0;

for(i=0;i<2;i++){

int a=3;

k+=f(a);

}

k+=a;

printf("%d\n",k);

return 0;

}

最后输出14

考虑作用域及可见性的问题,以及++的用法

按照程序执行的顺序来分析

i = 0 时,定义了int a ,a的作用域仅仅在int a=3;k+=f(a);语句中,执行完后a就被释放了。先做f(3),

此时在f(3)的stack区中

c = c+1,执行完后c=4;

(a++)+c的值是2+4=6,此时全局变量a被局部变量a所覆盖,不可见,但是有作用域。

然后a=3并且保存在data区中,直到程序结束后才释放 f返回时,返回的是6,则k=6 i = 1时,做f(3),同上,c=4,注意此时局部静态变量a的值是3,因此(a++)+c的值是7,之后a自增成4 f返回时,返回的是7,那么k+=f(a)的结果就是6+7=13 i = 2 时,退出循环 k+=a;此处的a是全局变量a,值为1,所以k的值变成了14!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。