精華區beta Programming 關於我們 聯絡資訊
==> 在 ykjiang.bbs@ptt.cc (Yukuan) 的文章中提到: > char *str = "string"; > 就是 > const char str[] = "string"; > 的簡略寫法,這是 C++ 從 C 那沿襲來的陋習。已經是慣用法了。 > 如果你還不懂,建議先去搞清楚 stack, heap 及 literal pool 間的差別。 不對吧..... char*是宣告指標 const char str[]是宣告陣列,這怎麼會一樣.... EX: char *str="string"; char aaa; . . str = &aaa; //是合法的 你宣告成const char str[]的話,不能做一樣的事,由此可見這兩者是不同的 > ※ 引述《Aligu1009 (=.=)》之銘言: > : 作者: 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)的寫法看成一樣的 > : 看來是我觀念錯了 > : 請問這兩種寫法差在哪裡呢? 謝謝 -- * Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>