Re: [請益] 指標的問題
※ 引述《LPH66 (IWH68S0XZ8M89)》之銘言:
: ※ 引述《readonly (唯讀)》之銘言:
: : 不過如果是只能看到function prototype,例如用別人的library,
: : void f( object * p );
: : object * p;
: : f( p );
: : 一般人應該會這樣寫,這不就危險了?
: 所以這個f的文件裡就要說明他收的p是個怎樣的參數
: 看要是個合法變數的位址或是陣列等等
: 然後要指示說這必須要用如 f(&var); 這樣傳進去 (如果要傳個變數的位址進去的話)
: : ※
: : 只是有點好奇,這樣的寫法要用在什麼情況?
: C語言中當該參數是輸出用的時候或是可能改動到該參數時
: (有時會被特稱(且誤稱)為call by adderss)
: 也許是因為回傳太多東西 也許是因為回傳值是個陣列或是個還滿大的東西
: 而必須要把其中一個或多個放到參數列去
: 例如<time.h>中有個函式叫gettime
: 它是這樣的prototype:
: void gettime(struct time *);
: 它的功能是回傳(以struct time紀錄的)目前時間
: 那因為這個參數是輸出用 所以就要傳進變數的位址進去
: 例如要用
: struct time t;
: gettime(&t);
: 這樣去使用它
小小補充一下一點點心得
這樣說好了
指標有點「比照辦理」的意思在內
好比說
正妹 *p
意味著 在&p的位置有正妹一枚
至於要如何「辦理」該枚正妹
端看
1.正妹有public甚麼member 以及你有沒有 "人:女:正 某正妹 的spec"(煙+遠目)
2.你是不是正妹的friend
等等
但是宣告以辦理正妹的 method 去 &p (傳回一個你"以為"是正妹所在位置)
逕行「辦理」該位置所存在的人事物
很有可能會要到奇怪的疤面煞星的電話...
這可能會造成不可逆料的結局...
萬萬小心...
--
閑言碎語風涼話
將睡未醒事後菸
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 86.137.1.254
推
12/08 17:39, , 1F
12/08 17:39, 1F
討論串 (同標題文章)