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

admin2019-01-11  44

问题 以下选项中,不能对主函数中变量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*)maUoc(sizeof(int));
    *t=*p;  *p=*q;  *q=*t;
    free(t);
    }
    main()  
    {
    int i=10,j=20;
    swap(&i,&j);printf("i=%d j=%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=%d j=%d\n",i,j);
    }

答案A

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

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