首先程序肯定是错误的,swap(&a,&b)和swap(int p,int q)中不能将int*传递给int。
B项中swap(a,b)传递的只是a,b的副本并未对a,b的值起到交换作用。
C改变后,交换的只是p,q指向的地址位置,但没有改写a,b地址中的内容。
正确程序如下;
#include
void swap(int *p,int *q)
{int t;
t=*p;
*p=*q;
*q=t;}
void main()
{int a=10,b=20;
cout< swap(&a,&b);
cout< }
A、swap(int p,int q)定义的时候用的是整型变量,不是指针变量,而在使用的时候不应该是swap(&a,&b)
B、如果将语句swap(&a,&b)的参数改为a,b,函数的功能不能将a和b值交换
C、在swap()函数中的形参p和q可以定义为引用swap(int &p,int &q),这样就行了
所以选D
D。
因为是引用传递,该函数可以完成变量的交换。