C:交换两个指针值

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更改为

我想用指针交换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
更改为
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
指向的位置的值