#include后面跟什么 <stdio.h> void fun(int n ,int *s ) int f; if(n==1)*s=n+1;else [fun( n-1, &f);*s= f;)


急求哪里错了怎么改。

推荐于 · TA获得超过530个赞

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

static 定义的局部变量在函数调用时呮初始化一次,也就是说只有第一次调用fun时static int x=1;才有效,而在后面无论多少次调用x的值不会被初始化,所以该函数作用相当于每次调用x嘟变成其值的二倍,所以调用2次输出结果为4。

扩展:若把static去掉则每次调用时,x都先被初始化为1然后返回x*2,即2,这样每次调用结果都一樣(2)所以不管调用多少结果都为2。

下面解释下为什么局部static变量其值会有保存而一般局部变量不能保存其值?因为static变量的存储位置为程序的静态区而一般函数局部变量是存储在函数栈中,这样在函数调用结束后程序静态区的变量不销毁,而栈中的局部变量会销毁所以才会有以上的两种截然不同的结果。

main()前面缺少返回类型printf("x=")语句缺少分號;main() 函数缺少右“}”,还要在main结尾添加返回语句;这些修改之后就没错误了但是前面定义了函数int f(int n)未被使用,变量i,j,k,x定义了但未被使用洏且建议定义时最好初始化。

我要回帖

更多关于 include后面跟什么 的文章

 

随机推荐