交换指针的地址值

时间:2015-09-04 06:28:36

标签: pointers

下面是代码,我想问一下,为什么我没有得到交换数字,因为我没有交换数字而是试图交换他们的地址。

    int *swap(int *ptr1,int *ptr2){
    int *temp;
    temp = ptr1;
    ptr1= ptr2;
    ptr2=temp;
    return ptr1,ptr2;
}
int main(){
    int num1=2,num2=4,*ptr1=&num1,*ptr2=&num2;
    swap(ptr1,ptr2);
    printf("\nafter swaping the first number is : %d\t and the second number is : %d\n",*ptr1,*ptr2);
}

1 个答案:

答案 0 :(得分:1)

我可以在你的代码中看到两个问题。

首先,在swap函数中,ptr1ptr2main中具有相同名称的指针的本地副本。在swap中更改它们只会更改这些副本,而不是原件。

其次,return语句没有做任何有用的事情。函数swap被声明为返回单个int *。 return语句实际上只返回{​​{1}} - 为什么会这样,查找"逗号运算符"但是你无论如何都忽略了ptr2中的返回值,所以它没有任何可能性。