作者mmmaaatttttt (宅宅)
看板C_and_CPP
標題[問題] 算是有點蠢的新手問題
時間Sat Mar 20 16:50:11 2010
#include<stdio.h>
#include<stdlib.h>
void swap(int i, int j);
int main(){
int i = 1, j = 2;
swap(i, j);
printf("i = %d\nj = %d\n", i, j);
system("pause");
return 0;
}
void swap(int i, int j){
int tmp = i;
i = j;
j = tmp;
}
為啥跑出來的結果 i 和 j 沒有交換?
是因為在函式裡換完後出函式就還原了嗎?
還是有其他的原因? 請各位大大說明一下
另外我還有看到傳入值為指標形的( *i, *j)和( &i, &j)
為什麼這兩個會成功交換? 是因為指標的定位換完後不會還原?
麻煩大家指教一下……謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.204.40
1F:推 adks3489:在swap()裡面是不同的東西 03/20 16:57
2F:→ adks3489:可以去查查看call by value 旁邊應該會附上其他兩種情況 03/20 16:58
3F:推 VictorTom:#1A5iL3A- 別想著還原, 把兩個函數裡的address印出來看 03/20 17:01
4F:→ VictorTom:看:) 03/20 17:01
5F:推 nowar100:傳值 傳址 03/20 17:07