[問題] 算是有點蠢的新手問題

看板C_and_CPP (C/C++)作者 (宅宅)時間16年前 (2010/03/20 16:50), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
#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

03/20 16:57, , 1F
在swap()裡面是不同的東西
03/20 16:57, 1F

03/20 16:58, , 2F
可以去查查看call by value 旁邊應該會附上其他兩種情況
03/20 16:58, 2F

03/20 17:01, , 3F
#1A5iL3A- 別想著還原, 把兩個函數裡的address印出來看
03/20 17:01, 3F

03/20 17:01, , 4F
看:)
03/20 17:01, 4F

03/20 17:07, , 5F
傳值 傳址
03/20 17:07, 5F
文章代碼(AID): #1Bf8n8ps (C_and_CPP)
文章代碼(AID): #1Bf8n8ps (C_and_CPP)