下面的代码应该是什么输出?为什么呢? 我不确定在主函数中声明的int是否像局部变量一样。
static int i = 3;
void f(int*j){
j++;
}
int g(int* j){
return i+=*j;
}
void h(int j, int k){
printf("%d,%d,%d\n", i,j,k);
}
int main(){
int i = 3;
int j = 5;
int *p = &i;
f(&i);
f(p);
for(;i<5;i++){
*p = g(p);
}
h(i,j);
return 0;
}
答案 0 :(得分:0)
这些对函数f
的调用
f(&i);
f(p);
没有效果。
在函数g中,更改了全局变量i
int g(int* j){
return i+=*j;
}
函数在循环中被调用
for(;i<5;i++){
*p = g(p);
}
i
等于3
一次,则全局变量i
将等于i + 3 = 6
。局部变量i
等于该函数返回的全局变量i
的值(等于6),然后在循环中递增。因此,退出循环后,它将等于7
..
此通话
h(i,j);
输出全局变量i
,并将局部变量i
和j
作为参数传递。因此其输出将为6,7,5
。