[問題] 字元指標問題

看板C_and_CPP作者 (嘿嘿...)時間16年前 (2010/01/21 15:23), 編輯推噓3(3016)
留言19則, 5人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 剛剛爬文看一下字元指標相關問題 也看了新手十戒~ 產生了疑問>"< 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

01/21 15:28, , 1F
3. 請用 cout << &ptr;
01/21 15:28, 1F

01/21 15:37, , 2F
1. 的確如此 2. 正確
01/21 15:37, 2F

01/21 15:38, , 3F
3. cout << (void*)ptr;
01/21 15:38, 3F

01/21 15:38, , 4F
一樓印的是 ptr 所在位址而非指向位址
01/21 15:38, 4F

01/21 15:40, , 5F
確實 我搞錯了 orz
01/21 15:40, 5F

01/21 15:46, , 6F
其實我覺得從文字的描述就可以看出一點誤解, 當然也可能
01/21 15:46, 6F

01/21 15:46, , 7F
是口誤就是了.
01/21 15:46, 7F

01/21 15:47, , 8F
ptr是一個指標, 記錄的是位址, 而非ptr是一個位址;
01/21 15:47, 8F

01/21 15:48, , 9F
因此, 你是把ptr重新指向另一個位址, 即"new"所在的位址
01/21 15:48, 9F

01/21 15:49, , 10F
而不是'塞一個"new"給它'. @_@"
01/21 15:49, 10F

01/21 15:52, , 11F
後續2.3.的測試過程, 用3F L大的方式就能如你所想的測出
01/21 15:52, 11F

01/21 15:52, , 12F
來了:)
01/21 15:52, 12F

01/21 15:54, , 13F
謝謝V大和L大,我瞭解了~ 另外,我文字表達比較粗魯一點~哈
01/21 15:54, 13F

01/21 16:11, , 14F
其實, 是小弟我自己以前也在板上看到類似的問題後才搞懂
01/21 16:11, 14F

01/21 16:12, , 15F
char *s="abc"; s="123"; 是合法的, 以前都沒想到...orz
01/21 16:12, 15F

01/21 16:16, , 16F
呵~
01/21 16:16, 16F

01/21 19:54, , 17F
warning: deprecated conversion from string constant to
01/21 19:54, 17F

01/21 19:54, , 18F
'char*'
01/21 19:54, 18F

01/21 19:54, , 19F
用 const char * 才對。
01/21 19:54, 19F
文章代碼(AID): #1BM0454J (C_and_CPP)