作者ykjiang (Yukuan)
看板Programming
標題Re: [問題] C/C++中char*與char[]的差異
時間Wed Oct 18 14:41:28 2006
char *str = "string";
就是
const char str[] = "string";
的簡略寫法,這是 C++ 從 C 那沿襲來的陋習。已經是慣用法了。
如果你還不懂,建議先去搞清楚 stack, heap 及 literal pool 間的差別。
※ 引述《Aligu1009 (=.=)》之銘言:
: ※ [本文轉錄自 C_and_CPP 看板]
: 作者: Aligu1009 (=.=) 看板: C_and_CPP
: 標題: [問題] 函數回傳char*的問題
: 時間: Tue Oct 17 19:56:22 2006
: 在下面的程式片段中
: char* getStr() {
: // char str[] = "string"; // (1)
: char* str = "string"; // (2)
: return str;
: }
: void main() {
: char* pStr = NULL;
: pStr = getStr();
: cout << pStr << endl;
: }
: 若照目前這樣編譯執行結果會印出string
: 但若把(2)那行拿掉只留(1)那行則編譯(g++)會有warning:
: address of local variable 'str' returned
: 我一直把(1)和(2)的寫法看成一樣的
: 看來是我觀念錯了
: 請問這兩種寫法差在哪裡呢? 謝謝
--
生命的奇蹟,在於不論如何緊抓著現實不放,現實還是會不斷地令我們感到驚奇;
科學之美,在於無論盲從是多麼地根深柢固,我們還是會被這些驚奇所喚醒。
--
Blog: yukuan.blogspot.com
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.99.225
推 cole945:不一樣吧..o_O" 220.139.136.21 10/18 16:43
推 ykjiang:合格的入門書都應該提到這點... 203.70.99.225 10/18 19:14
推 Aligu1009:K&R的the c programming language沒提:p218.169.113.226 10/18 22:36