fun(a+fun(d)); //先里后外嘛
先fun(d) 因为main中没定义d,没局部就取全局的,d=1
fun(int p)
{
static int d=5;
d+=p;
printf("%d ",d);
return(d);
}
所以p = 1
由于fun里有局部静态int d = 5
d += p 就是 5 + 1 = 6
第一次输出就是6了
return(d); 返回6 给 fun(a+fun(d)); 就是 fun(a + 6),a是3 那就是fun(9)
fun(int p)
{
static int d=5;
d+=p;
printf("%d ",d);
return(d);
}
p = 9
d += p 为 6 + 9 = 15(前面说了d是静态int,它保存的值直到程序结束才消除,所以d保存了上面计算的5 + 1 = 6)
第二次输出为15
return(d); 返回15回main
再输出 还是15
结果 6 15 15
C
你定义的时候用static
比如
static int a = 8;
但是定义了static之后就不能改变它的值
要想在函数内部改变它就再定义一个数据,使它等于全局变量
比如
void func(void)
{
int b = a; //这里你得到的肯定是a的最初值
这时候你随便去改变b的值都没关系。a还是a;
}
以上就是关于C语言 函数全局变量和局部变量全部的内容,包括:C语言 函数全局变量和局部变量、c 语言里怎么定义一个全局变量,使其在调用它的每个函数里都是最初的值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)