一道C语言选择题,答案是什么?怎么计算的?

下列程序的输出结果是

int b=2;

int func(int *a)

{ b += *a; return(b);}

main()

{ int a=2, res=2;

res += func(&a);

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

}

A)4 B)6 C)8 D)10

一开始 a=2, res=2;b=2;

在这里进入func函数
res += func(&a);

函数里执行b += *a; return(b) 结果返回值为 4

回到函数调用这里
res += func(&a); 结果res为6

最后输出为6 选B
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-25
答案选B。
从main()函数算起,res+=func(&a),执行func()函数后,b的返回值是4,最终结果就等于6
第2个回答  2011-03-25
res=res+func(&a)
这里调用函数func() 传给形参的是地址,因此指针a指向a的地址 在这里相当于把a的值传过去
b+=*a, b=b+*a b=b+2 (这里b是一个全局变量,赋初值2)最后得出 ,b=4 func() 函数返回的值为4 res=res+4, res=6
所以选 c
第3个回答  2011-03-25
B

完整编译代码:
#include<stdio.h>
int b=2;
int func(int *a)
{
b+=*a;
return b;
}

int main(void)
{
int a=2, res=2;
res=func(&a)+res;
//res =res+func(&a);
printf("%d\n",res);
return 0;
}
相似回答