单选题
下列程序的运行结果是( )。 #include<stdio.h> void sub(int*s,int*y) { static int m=4; *y=s[m]; m--;} void main() { int a[]={1,2,3,4,5},k,x; printf(''\n''); for(k=0;k<=4;k++) {sub(a,&x); printf(''%d,'',x); }}
【正确答案】
A
【答案解析】解析:本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留:所以当main()函数中的for循环中语句“sub(a,&x)”;执行时,sub函数中m的值依次是4、3、2、1、0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。