code.club

 找回密碼
 立即註冊
搜索
查看: 6986|回復: 4
打印 上一主題 下一主題

C語言函數中的變數問題

[複製鏈接]
樓主
發表於 2014-10-15 20:39:46 | 顯示全部樓層
因為,如果是一般的方式呼叫 swap(a, b) 他是把 a,b 兩個 value 複製一份傳入 swap 這個 function

在 main 這個 scoop 裡面的 a,b 還是維持原本的 value 沒有被影響到

而 swap(&a,&b) 是把這兩個記憶體的 address 傳進去,這樣 swap 裡面操作的其實是 main scoop 的 a,b

因此在裡面做交換,就會影響到 main scoop
回復 支持 反對

使用道具 舉報

沙發
發表於 2014-10-15 20:45:02 | 顯示全部樓層
嗯,你可能要先釐清一下變數 scoop 的概念,在一個 function 裡面的 local var 他的 scoop 只有在這個 function

所以你在 main 裡面是操作 x,y 這個變數,你也在同一個 scoop 把它印出來,所以是會互換的

而 swap 裡面的 a,b 雖然跟 main 的 a,b 同一個名字,但他們因為是不同的 scoop

所以基本上是完全沒有任何關係的兩組變數
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-5-2 15:00 , Processed in 0.069848 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表