C:交换两个指针值
我想用指针交换2个整数的值C:交换两个指针值,c,pointers,swap,C,Pointers,Swap,我想用指针交换2个整数的值 void swap(int *a, int *b) { int *temp; temp = &a; *a = *b; *b = *temp; } 为什么这不起作用 错误提示: incompatible pointer types initializing 'int *' with an expression of type 'int **' temp是一个指针。您需要的是一个int来获取a所指向的值。您需要将temp更改为
void swap(int *a, int *b)
{
int *temp;
temp = &a;
*a = *b;
*b = *temp;
}
为什么这不起作用
错误提示:
incompatible pointer types initializing 'int *' with an expression of type 'int **'
temp
是一个指针。您需要的是一个int
来获取a
所指向的值。您需要将temp
更改为int
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = *temp;
}
您可能想学习一些关于C的教程来了解指针是如何工作的。在网上和书中有大量可用资源的情况下,要解释堆栈溢出的答案有点难。您的编译器可能已经告诉您了。如果没有,请尝试启用警告消息。是的,但为什么我不能执行temp=&a?因为它们是不同的数据类型,使得
temp
成为指向指针的指针,这毫无意义。试试inttemp=*a*a=*b*b=温度代码>啊,你这么说是因为a已经是指针了?我明白了。那么&a不存在了?a是地址,所以&a是什么?指针变量的地址。它被称为双指针(int**)。@cuckcuc&a
确实存在,但与您的问题无关。您想更改a
指向的位置的值