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

admin2020-10-26  29

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

选项 A、#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
#include <stdlib.h>
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=%d j= %d\n", i,j );
}
D、 #include <stdio.h>
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选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型变量,能实现i与j值交换。C选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型指针,且已正确开辟内存,能实现i与j值交换。D选项与B选项相同,能实现i与j值交换。
转载请注明原文地址:https://jikaoti.com/ti/NnD0FFFM
0

最新回复(0)