一个简单的c语言程序(解释一下)。
展开全部
f(int
a)
........定义f()函数体,他的参数是a,int类型
{auto
b=0;................定义局部变理b
static
c=3;
...........定义静态存储变量c=3
b=b+1;
..................每次调用时b+1,相当于b++
c=c+1;
................每次调用时c+1,相当于c++
return(a+b+c);
.................把a+b+c的值返回到printf("%d",f(a));
中的f(a)
}
main()
{int
a=2,i;
...............定义变量a,i其中a赋初值而i没有给出值
for(i=0;i<3;i++)
..............建立一个for循环
printf("%d",f(a));
..............输出printf("%d",f(a))共三次
}
a)
........定义f()函数体,他的参数是a,int类型
{auto
b=0;................定义局部变理b
static
c=3;
...........定义静态存储变量c=3
b=b+1;
..................每次调用时b+1,相当于b++
c=c+1;
................每次调用时c+1,相当于c++
return(a+b+c);
.................把a+b+c的值返回到printf("%d",f(a));
中的f(a)
}
main()
{int
a=2,i;
...............定义变量a,i其中a赋初值而i没有给出值
for(i=0;i<3;i++)
..............建立一个for循环
printf("%d",f(a));
..............输出printf("%d",f(a))共三次
}
展开全部
f(int
a)
{auto
b=0;
<-----我们默认的变量就是自动变量,可以不写出来这个auto。这种变量就是只有进入函数时才存在(给它内存),退出函数时就不存在(即释放分配给它的内存,等价于直接
int
b;
static
c=3;
<-----static变量不用进入该函数也存在,而且只有第一次进入该函数时才会执行赋初值这一指令,以后再进入该函数不会再赋初值了,因为它一直存在(即内存没被释放),(注意是不会赋初值了,它的值就是上一次退出该函数时的值,但可以改变它的值。)
b=b+1;
<----b因为是auto,退出时就不存在了,所以值也会消失,所以它的初值总是一样
c=c+1;
<------C的值将一直保留,不断增加
return(a+b+c);
}
main()
{int
a=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
相信懂了上面,自己就能分析吧?
a)
{auto
b=0;
<-----我们默认的变量就是自动变量,可以不写出来这个auto。这种变量就是只有进入函数时才存在(给它内存),退出函数时就不存在(即释放分配给它的内存,等价于直接
int
b;
static
c=3;
<-----static变量不用进入该函数也存在,而且只有第一次进入该函数时才会执行赋初值这一指令,以后再进入该函数不会再赋初值了,因为它一直存在(即内存没被释放),(注意是不会赋初值了,它的值就是上一次退出该函数时的值,但可以改变它的值。)
b=b+1;
<----b因为是auto,退出时就不存在了,所以值也会消失,所以它的初值总是一样
c=c+1;
<------C的值将一直保留,不断增加
return(a+b+c);
}
main()
{int
a=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
相信懂了上面,自己就能分析吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先呢,“f(int
a)这个是函数名
类型是int
的(没写)”
其实,为int型的函数
可以不写int的
f()前面什么也没写的自动认为是int。auto为是自动变量,写不写都一样的其实,auto的变量在函数运行结束后自动释放空间,也就是说它就不存在了。static为静态变量,是整个程序运行结束后才释放空间,也就是说在程序没有全部结束之前,赋值是永远保留上一次的赋值的。
本题中,自定义函数f中的b,每次调用f函数都是一个“新的”值,而c为一直都保留着上一次运行时c被赋的值。我这么说,你应该就能明白了吧
a)这个是函数名
类型是int
的(没写)”
其实,为int型的函数
可以不写int的
f()前面什么也没写的自动认为是int。auto为是自动变量,写不写都一样的其实,auto的变量在函数运行结束后自动释放空间,也就是说它就不存在了。static为静态变量,是整个程序运行结束后才释放空间,也就是说在程序没有全部结束之前,赋值是永远保留上一次的赋值的。
本题中,自定义函数f中的b,每次调用f函数都是一个“新的”值,而c为一直都保留着上一次运行时c被赋的值。我这么说,你应该就能明白了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f(int
a)
//
为要调用输出的函数内容
{auto
b=0;
//定义局部变理b
static
c=3;
//定义静态存储变量c=3
b=b+1;
//每次调用时b+1,由于是局部变量
所以第一次b=1,第二次b=1,第三次b=1
c=c+1;
//每次调用时c+1,由于是静态变量
所以第一次c=4,第二次c=5,第三次c=6
return(a+b+c);
//故三次调用的答案分别为2+1+4,2+1+5,2+1+6
}
main()
{int
a=2,i;
//定义A=2和i作为整形
for(i=0;i<3;i++)
//建立一个for循环
printf("%d",f(a));
//因为i=0,i<3,所以在这个for循环下一共输出printf("%d",f(a));
三次
}
a)
//
为要调用输出的函数内容
{auto
b=0;
//定义局部变理b
static
c=3;
//定义静态存储变量c=3
b=b+1;
//每次调用时b+1,由于是局部变量
所以第一次b=1,第二次b=1,第三次b=1
c=c+1;
//每次调用时c+1,由于是静态变量
所以第一次c=4,第二次c=5,第三次c=6
return(a+b+c);
//故三次调用的答案分别为2+1+4,2+1+5,2+1+6
}
main()
{int
a=2,i;
//定义A=2和i作为整形
for(i=0;i<3;i++)
//建立一个for循环
printf("%d",f(a));
//因为i=0,i<3,所以在这个for循环下一共输出printf("%d",f(a));
三次
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f(int
a)这个是函数名
类型是int
的(没写)
auto
是定义局部变量,局部变量在自己的代码模块之外是不可知的
static是静态存储类型,就是在整个程序中都能用这个变量.
然后就返回a+b+c;
主函数里循环三次,得出三个答案...2+1+4,2+1+5,2+1+6....
其实就是考你auto
和static
的用法!
a)这个是函数名
类型是int
的(没写)
auto
是定义局部变量,局部变量在自己的代码模块之外是不可知的
static是静态存储类型,就是在整个程序中都能用这个变量.
然后就返回a+b+c;
主函数里循环三次,得出三个答案...2+1+4,2+1+5,2+1+6....
其实就是考你auto
和static
的用法!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询