精華區beta Programming 關於我們 聯絡資訊
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