指针间的相互赋值是什么意思
发布网友
发布时间:2023-05-11 14:43
我来回答
共3个回答
热心网友
时间:2024-11-29 11:47
主函数中的 p 和 q ,跟 swap 函数中的 a 和 b 是不同的 4 个指针。swap 中交换的是 a 和 b 的地址, p 跟 q 的地址并没有被交换,所以输出来的结果没有改变值。需要这样修改:
void swap(int *a,int *b)
{
int t;
t=*a;*a=*b;*b=t;
}
比如 a 和 b 的地址分别为 1001 和 1005,那么 p 和 a 等于 1001,q 和 b 等于 1005。你在 swap 中只是将 a 变成 1005,将 b 变成 1001,但是 p 还是 1001,q 还是1005,明白了吗?
热心网友
时间:2024-11-29 11:47
你要交换得这样 2333
void swap(int*& a,int*& b)
{
int* t;
t=a;
a=b;
b=t;
}
原先的函数,你传递是形参,不是引用。在函数调用时对指针进行了 拷贝,之后你在函数里面进行的交换是独立的,就是说你交换了两个全新的指针。
你得传递指针引用 0.0 ,感觉有点异样
热心网友
时间:2024-11-29 11:48
不知唉