==> 在 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>