以下选项中,不能对主函数中变量i和j的值进行交换的程序是( )。

admin2021-06-15  39

问题 以下选项中,不能对主函数中变量i和j的值进行交换的程序是(    )。

选项 A、#include
    void swap(int*p,int*q)
    {int*t;
    *t=*p;*p=*q;*q=*t;
    }
    main()
    {
    int i=10,j=20,*a=&i,*b=&j;
    swap(a,b);printf("i=%d j=%d\n",i,j);
    }
B、#include
    void swap(int*P,int*q)
    {int t;
    t=*p;*p:*q;*q=t;
    }
    main()
    {
    int i=10,j=20,*a=&i,*b=&j;
    swap(a,b);printf("i=%d j=%d\n",i,j);
    }
C、#include
    #include
    void swap(int*p,int*q)
    {int*t;
    t=(int*)malloc(sizeof(int));
    *t=*p;*p=*q;*q=*t;
    free(t);
    }
    main()
    {
    int i=10,j=20;
    swap(&i,&j);printf("i=%dj=%d\n",i,j);
    }
D、#include
    void swap(int*p,int*q)
    {int t;
    t=*P;*p=*q;*q=t;
    }
    main()
    {
    int i=10,j=20,*x=&i,*y=&j;
    swap(x,y);printf("i=%dj=%d\n",i,j);
    }

答案A

解析 A项,定义了一个临时指针t,实现两个指针地址的交换,传入的参数是两个指针的副本,故交换了副本地址,对a、b无影响;B项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时变量t为整型变量,能实现i与j值交换;C项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时  变量t为整型指针,且已正确开辟内存,能实现i与j值交换;D项与B项相同,能实现i与j值交换。
转载请注明原文地址:https://kaotiyun.com/show/Q5tp777K
0

最新回复(0)