※ 引述《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)