有以下程序 int a=2; int f(int*a) {return(*a) ++;} main() { int s=0; { int a=5; s+=f(&a) ; } s+=f(&a) ;

admin2009-04-15  21

问题 有以下程序    int a=2;    int f(int*a)    {return(*a) ++;}     main()    { int s=0;    { int a=5;    s+=f(&a) ;    }    s+=f(&a) ;    pfintf("%d\n",a) ;    }    执行后输出结果是

选项 A、10
B、9
C、7
D、8

答案4

解析 若在函数中定义了与全局变量名字相同局部变量,则全局变量在该函数中将不起作用。本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,故全局变量在复合语句中将不起作用,然后调用函数f(&a) (该函数的作用是返回存储变量a的空间中的值,并让该值加1,分析程序可知返回值为5,并让a值加 1变为6),并将返回值加到s中。此时s的值为5,然后执行该复合语句外的其他语句,同样调用函数f(&a) ,但传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为 7,故最后输出的s的值为7。
转载请注明原文地址:https://kaotiyun.com/show/toWp777K
0

随机试题
最新回复(0)