作者althon (嘿嘿...)
看板C_and_CPP
標題[問題] 字元指標問題
時間Thu Jan 21 15:23:47 2010
遇到的問題: (題意請描述清楚)
剛剛爬文看一下字元指標相關問題
也看了新手十戒~
產生了疑問>"<
1.如程式中,ptr原本內容是old,後來設定成new
我之前一直以為不行>"< 因為ptr是字元常數指標
還是我誤會了,僅是沒辦法一個一個字元去改????
2.爬文看有人這樣寫,當時我嚇到...
ptr="new",我以前不知道有這個用法,因為ptr是位址,怎麼塞一個"new"給它?
還是說ptr是重新指向另一個字串new的開頭???
3.原本想說來看一下ptr所指向的位址,發現C++沒辦法耶>"<
因為cout << ptr ; 就直接印出ptr所指向的內容>"<
不好意思,又要麻煩各位,我太嫩了>"<
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有問題的code: (請善用置底文標色功能)
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char *ptr="old";
cout << ptr << endl;
ptr="new";
cout << ptr << endl;
system("pause");
return 0;
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.136.211.19
1F:→ james732:3. 請用 cout << &ptr; 01/21 15:28
2F:推 LPH66:1. 的確如此 2. 正確 01/21 15:37
3F:→ LPH66:3. cout << (void*)ptr; 01/21 15:38
4F:→ LPH66:一樓印的是 ptr 所在位址而非指向位址 01/21 15:38
5F:→ james732:確實 我搞錯了 orz 01/21 15:40
6F:推 VictorTom:其實我覺得從文字的描述就可以看出一點誤解, 當然也可能 01/21 15:46
7F:→ VictorTom:是口誤就是了. 01/21 15:46
8F:→ VictorTom:ptr是一個指標, 記錄的是位址, 而非ptr是一個位址; 01/21 15:47
9F:→ VictorTom:因此, 你是把ptr重新指向另一個位址, 即"new"所在的位址 01/21 15:48
10F:→ VictorTom:而不是'塞一個"new"給它'. @_@" 01/21 15:49
11F:→ VictorTom:後續2.3.的測試過程, 用3F L大的方式就能如你所想的測出 01/21 15:52
12F:→ VictorTom:來了:) 01/21 15:52
13F:→ althon:謝謝V大和L大,我瞭解了~ 另外,我文字表達比較粗魯一點~哈 01/21 15:54
14F:推 VictorTom:其實, 是小弟我自己以前也在板上看到類似的問題後才搞懂 01/21 16:11
15F:→ VictorTom:char *s="abc"; s="123"; 是合法的, 以前都沒想到...orz 01/21 16:12
16F:→ althon:呵~ 01/21 16:16
17F:→ tinlans:warning: deprecated conversion from string constant to 01/21 19:54
18F:→ tinlans:'char*' 01/21 19:54
19F:→ tinlans:用 const char * 才對。 01/21 19:54