看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Muderlay (嘻嘻)》之銘言: 直接舉個例子來看吧, 請捲到推文區:) : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ : : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : : 問題(Question): : 我想請問 一開始宣告函式的時候如果定義的引數是一個雙重指標 : : 而實際上呼叫該函釋的時候卻是寫入一個參考 哪兩者之間的關係為何? : : EX: : : 宣告 void prepare_enc_frame_picture(Store **stored_pic); : 呼叫 prepare_enc_frame_picture(&enc_frame[0]); : : //Store為自己定義的資料結構,enc_frame也是(Store **enc_frame;) : : : 那這樣子的話 stored_pic跟enc_frame[0]之間有什麼關係? : : 我可以直接說這兩個就是一樣的東西嗎?? : : : 不知道這樣問大家清楚我的問題是什麼嗎 希望我表達得夠清楚 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.113.208.69 : TsinTa:寫入的應該不是參考,是enc_frame[0]所在的位址 04/19 00:52 : Muderlay:那stored_pic跟enc_frame是一樣的變數嗎?? 04/19 00:53 : TsinTa:我覺得是一樣的 04/19 01:01 : TsinTa:其實你把&enc_frame[0]改成enc_frame應該也會對 04/19 01:02 : Muderlay:非常感謝樓上的幫忙^^ 04/19 01:02 : VictorTom:&在你舉的例子是取址的意思, 與C++的參考不是同個東西:) 04/19 01:11 : VictorTom:另外, stored_pic和enc_frame應該不會是一樣的變數, 而 04/19 01:12 : VictorTom:是stored_pic這個指標變數裡記錄的值(指向的位址)為 04/19 01:13 : VictorTom:&enc_frame[0]的結果(值), 中譯像是enc_frame[0]的位址 04/19 01:15 : VictorTom:你可以比比看 &enc_frame 和 &store_pic 結果應該是不一 04/19 01:16 : VictorTom:樣的:) 04/19 01:16 : Muderlay:所以**stored_pic是指向enc_frame[0]的address囉? 04/19 01:29 Memory: |--------|--------|--------|--------|.... ^ ~~~~~~ [1] [2] .... | enc_frame[0]儲存的內容. | +--> enc_frame[0]所在的位址 => &enc_frame[0]: 假設為0x00100000 PS. 如果你的enc_frame[0]是直接像 Store enc_frame[10]; 這樣子宣告的, 那麼此時, &enc_frame[0] 會恰好為 &enc_frame; 如果你的enc_frame[]是malloc/new來的, 則上一行的關係不成立. 當你執行了 prepare_enc_frame_picture(&enc_frame[0]); 這行以後.... 其實是把 0x00100000 這個值 push 進系統stack裡.... 而以 void prepare_enc_frame_picture(Store **stored_pic){...}的觀點來看.... 是讓stored_pic這個變數裡存入0x00100000這個值, 而變數就需要記憶體.... 所以在拉個簡圖來看, 像是下面這樣.... Memory: |--------|--------|.... ^ ~~~~~~ | 這塊空間裡, 存放了 0x00100000 | +--> stored_pic所在的位址, 可能是0x00200000 所以小弟我說enc_frame與stored_pic應該是不一樣的東西.... 您的問題我不確定我抓的對不對, 不如整套解釋出來給您參考吧:) 至於幾個 **, 純粹是你要讓幾重指標的型態要能匹配對而已@_@" -- 加冒號加的好累, 要怎樣連推文一起引言啊....Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.196.147.34 ※ 編輯: VictorTom 來自: 203.196.147.34 (04/19 01:56)
Muderlay:複製推文(包含ANS碼)XD 04/19 01:57
Muderlay:再次感謝 04/19 02:19