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

admin2015-07-28  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=%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)中,虽然函数swap()进行的是地址传参,但只是改变了指针的指向,对原指向的数据并没有改变。并且若以指针作为操作单元,不涉及其指向的数据时,该函数仍然可以看做是值传递,即形参指针指向的变化不会影响到实参指针的指向,所以并不能将主函数中的变量i和j互换数值。答案选A)。
转载请注明原文地址:https://kaotiyun.com/show/4KJp777K
0

最新回复(0)