0
我想交換兩個參數的值。但是我沒有通過在函數中交換他們的地址來實現它。起初,我認爲地址可以在功能上改變。但是在調試之後,我發現雖然地址在函數中被改變了,但在主函數中沒有改變。爲什麼指針的地址在函數中的作用與參數的值相同?做,只更改副本?通過函數中的地址交換兩個參數出錯
include<stdio.h>
void swap(int *, int *);
int main()
{
int a = 5 , b = 10;
swap(&a, &b);
printf("%d", a);
printf("\n%p", &a);
return 0;
}
void swap(int *a, int *b)
{
int *temp ;
temp = a;
a = b;
b = temp;
}
現在我已經學會了解決這個問題的方法之一。但誰能告訴我如何通過二級指針來解決它。因爲你是自動交換本地指針將一次函數調用返回不復存在
#include<stdio.h>
void swap();
int main()
{
int a = 5 , b = 10;
swap(&a, &b);
printf("%d", a);
printf("\n%p", &a);
return 0;
}
void swap(int *a, int *b)
{
int temp ;
temp = *a;
*a = *b;
*b = temp;
}
int a = 5,b = 10;只有1個深度。不能得到&((..)&a) –
在你的第二塊,你顯示正確的整數交換功能。你想在哪裏有第二個排名指針? – Holger
好的!我找到了我想要的答案。 – Ghoster