下面是代码,我想问一下,为什么我没有得到交换数字,因为我没有交换数字而是试图交换他们的地址。
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);
}
答案 0 :(得分:1)
我可以在你的代码中看到两个问题。
首先,在swap
函数中,ptr1
和ptr2
是main
中具有相同名称的指针的本地副本。在swap
中更改它们只会更改这些副本,而不是原件。
其次,return
语句没有做任何有用的事情。函数swap
被声明为返回单个int *
。 return语句实际上只返回{{1}} - 为什么会这样,查找"逗号运算符"但是你无论如何都忽略了ptr2
中的返回值,所以它没有任何可能性。