问题
单项选择题
有以下程序:
int a=2;
int f(int*
A.
return(*A) ++;
main()
int s=0;
int a=5;
s+=f(&A) ;
s+=f(&A) ;
printf("%d\n",s);
执行后输出结果是( )。A) 10
B.9
C.7
D.8
答案
参考答案:C
解析: 本题考核的知识点是局部变量和全局变量的区别。若在函数中定义与全局变量名字相同的局部变量,则全局变量在该函数中将不起作用。本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量a和全局变量a同名,故全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a的空间中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中。此时s的值为5,然后执行该复合语句外的其他语句,同样调用函数f(&a)(该函数的作用是返回存储变量a的空间中的值,并让该值加1,分析程序此时的a是全局变量a,可知返回值为2,并让a值加1变为3)并将返回值加到s中。此时s的值为7。