看板 C_and_CPP 關於我們 聯絡資訊
struct TEST { const char *str1; const char *str2; }; int main(void) { struct TEST ob; ob.str1 = "hello" ob.str2 = "world" return 0; } ob.str1 是一個 const char *,但是我將他指向給某一固定字串,我知道在宣告的時候 是合法的: const char *str3 = "hello, world"; 但是 ob.str1 = "hello" 應該不是合法的,對吧?因為 str1 只是一個指標,應該先配 置一固定記憶體給他之後,再透過如 strcpy() 來進行配置。不知道我這樣的想法正不 正確。看 code 的時候,常常會遇到類似上面的寫法。 麻煩大大為我解答一下,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.202.86.252
pponywong:你的想法是對的..要先malloc在strcpy 02/24 16:56
ledia:直接 = "hello" 也是對的, 只是它唯讀 02/24 17:21
ledia:指標可以指到某個 constant literal 上, 也可以經由配置記 02/24 17:22
ledia:憶體之後再賦值, 甚至可以讓它指向 static array 使用該空間 02/24 17:22
zlw:合法是指?編譯是可以通過的。ob.str1是指標,記憶體位址可以 02/24 17:29
zlw:隨你高興指定,只不過指標所指的東西,被認定為唯讀而已 02/24 17:29
zlw:ob.str1="Hello"這種寫法,很可能出現的就是拿來當參數傳值 02/24 17:31
zlw:如果是這種用法就不必做malloc了 02/24 17:31
Xphenomenon:感謝! 02/25 21:44