下列程序的运行结果是( )。 #inc1ude void sub(int*s,int*y) {static int m=4; *y:s[m]; m— —;} void main() { in

admin2020-07-28  13

问题 下列程序的运行结果是(    )。
    #inc1ude
    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;kH)
    { sub(a,&x);
    printf("%d,",x);
    }}

选项 A、5,4,3,2,1,
B、1,2,3,4,5,
C、0,0,0,0,0,
D、4,4,4,4,4,

答案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]。
转载请注明原文地址:https://kaotiyun.com/show/yT3p777K
0

相关试题推荐
最新回复(0)