精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《badsan (小小紅螞蟻)》之銘言: : 不好意思!!新手又來發問!!這幾個問題可能有點笨..請不要笑我~_~..我也很無奈.>.< : 目前看書看到指標的章節...剛開始看還覺得ok... : 不過看了好幾遍後...突然腦中有些問號出現....希望板上高手可以指點一下^^ : 第一個問題 : int i = 5; : int *ptr = &i; : cout << "i位址=" << ptr << "i值=" << *ptr << endl; : 書上有一些例子...大部分例子都類似上面用指標來輸出變數的內容和位址... : 可是如果單純要輸出i的內容和位址...就cout << i 或是 &i 不就好了嗎?? : 為什還要多此一舉透過指標來輸出i的內容和位址?? : 看到最後反而不知道指標的意義在那??@@... : 不知有沒有高手可以"簡單"舉個除了輸出變數值外比較能看出他用處所在的例子... 可以用&i去表示i的位置。我想它只是讓你能了解他的意思而已。 例子,function,C/C++的function只能接受數值而沒辦法透過參考呼叫函式。 void test(int a) { a = a + 1; } 在main中: int input = 30; test(input); printf(" %d", input); 答案還是30 如果改成這樣。 void test(int* a) { *a = *a + 1; } 在main中 int input = 30; test(&input); printf....... 答案是31 : 第二各問題 : 書上說指標是用來"指向"變數的位子...不太懂所謂指向的意思... : 因為依上個問題的例子...我用&ptr輸出ptr指標位址... : 發現他和i的位址不一樣...也就是說ptr也是有自己的位址?? 是的,ptr也能算一種變數 : 只是該位址指向了i的位址和內容?? yes,但沒有內容 : 本身ptr指標並不存放i的位址和內容...反而就像是"路標"的意思... ptr存i的位置但不存放其內容。 : 單純指引你說i的位址和內容在那個地方又是多少??? 單純的指引到i的位置。 int i = 30; int* ptr = 0; ptr i 內容 0x00 30 位置 0x12 0xf8 執行 ptr = &i;後 ptr i 內容 0xf8 30 位置 0x12 0xf8 -- 此人使用掉到馬桶的C++ Primer 4ed -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.222.6.208 ※ 編輯: doomleika 來自: 203.222.6.208 (07/27 23:05) ※ 編輯: doomleika 來自: 203.222.6.208 (07/27 23:07) ※ 編輯: doomleika 來自: 203.222.6.208 (07/27 23:08)