精華區beta Programming 關於我們 聯絡資訊
※ 引述《ykjiang (Yukuan)》之銘言: : char *str = "string"; : 就是 : const char str[] = "string"; : 的簡略寫法,這是 C++ 從 C 那沿襲來的陋習。已經是慣用法了。 : 如果你還不懂,建議先去搞清楚 stack, heap 及 literal pool 間的差別。 前者的 str 是 pointer, 後者的 str 是 char arry, 前者的 "string" 是 string literal,且為 static storage duration 所以在程式結束前位址都有效 但後者..如果你是宣告在function內.. 那他就是 local 變數..在return 後就無效(被pop掉) 以如下程式碼為例 const char *str1() { const char str[] = "string"; return str; } void str2() { const char str[] = "XXXXXX"; } int main() { const char *str; str = str1(); // 令 str 為 str1()內的str的址 str2(); printf("%s\n", str); return 0; } 大部份的編譯器編出來的程式應該會印出 XXXXX 而不是 string -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.189.40
Arton0306:這裡我印出亂碼耶@@ 210.58.5.192 10/19 01:10
cole945:我是用g++/3.4.4~ @___@" 220.139.189.40 10/19 01:20