看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《laiDark (Larry)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : 買書自修C++到現在 : 在學習指標方面有點苦手 : 遇到書上不懂 第一時間也會google看看不同的解釋 : 在動態記憶體配置上 書的內容是: : 取得一塊記憶體空間給指標使用,讓指標所指的是自己的專用空間 : 這個時候我就很納悶 所以指標一開始是沒有佔有記憶體位址嗎? no : http://ppt.cc/mIQ3 http://ppt.cc/qRVJ : 在這兩個網站上面,看到指標還是有自己的記憶體位址 : http://ppt.cc/4qlJ 在這邊理解動態記憶體配置 : 所以我是否能理解成 : : 指標本身佔有記憶體位址, : 若是要使指標能夠儲存資料(非記憶體位址)時,就需要動態記憶體配置 : 這樣的說法是否正確?? 有錯誤的地方拜託告訴我 not exactly : 另外 在書上面看到op這個比較運算子 : 操作 功能 運算結果 : 位址op位址 求出二位址值的大小 假或真 : 但我在code block上面打op 只告訴我尚未宣告op.. : 我google也是查不到op的資料 : 讓我懷疑是否有這個比較運算子..... 沒看過。 記得很多書都是這樣寫的: 指標指向某一塊記憶體,指標的值為某一塊記憶體的位址。 於是乎下面這程式應該可以解你的惑: http://ideone.com/e5rBng #include <iostream> using namespace std; int main() { int i = 5; int* p; cout << "pointer p is " << *p << " at " << (void*)&p << " and size is " << sizeof(p) << endl; p = new int; //*p = 10; cout << "pointer p is " << *p << " at " << (void*)&p << " and size is " << sizeof(p) << endl; delete p; p = &i; cout << "pointer p is " << *p << " at " << (void*)&p << " and size is " << sizeof(p) << endl; return 0; } 其中有一些重點: 可以宣告一個指標不指向某一塊記憶體,於是乎他的值是垃圾值。 所謂動態new一塊記憶體意思就是要讓指標有個地方可以指向。 如果你不new,那就拿一個已經定義過的變數讓指標指向該變數的記憶體。 請記得一個觀念, 如果今天你是要有效運用指標做事情的話,他必須指向某一塊記憶體。 這一塊記憶體可以用new的,也可以是現成已定義過的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.203.156 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1410159425.A.20B.html
LPH66: 補充一點: 如果要指標明確表示不指向任何東西 09/08 15:00
LPH66: 那將它指向 0 或 nullptr 即可 09/08 15:00
LPH66: (用 0 有些地方要小心, 另外 NULL 跟 0 是一樣的) 09/08 15:01
LPH66: (不過大部份狀況用 0 並不會糟到哪裡去就是了) 09/08 15:02
laiDark: 謝謝!! 已經理解了~ (可是那段程式不能成功運行耶.... 09/08 19:39