看板 C_and_CPP 關於我們 聯絡資訊
在c語言中宣告如以下是否合法 char *s; s="abc"; 還是必須要正規使用 char *s; s = malloc(4*sizeof(char)); for(int i=0;i++;i<3) *(s+i)=97+i; ...... free(s); 以後比較不會有問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.23.207
james732:s="abc"是合法的,只是s內容不能修改,譬如s[0]='d'會錯 09/24 01:15
james732:這叫做string literal, google可找到說明 09/24 01:16
james732:你下面的寫法沒加上'\0'反而容易有問題 09/24 01:17
loveme00835:這個 for 應該會炸掉... 遇到字串符號就要聯想到 char 09/24 01:41
loveme00835:const *, 這樣才合理 09/24 01:41
FAITHY:感謝樓上兩位強者大大^^ 09/24 01:44
loveme00835:看錯, 不會炸掉, 是不會跑 XD 09/24 01:54
james732:樓上沒說我都沒發現他的for怪怪的 XDDD 09/24 01:55
fbiwbi:for裡面東西擺錯順序了.. 09/24 03:22
elfkiller:s="abc" 這種在程式結束前是不是無法free掉? 09/24 03:43
nowar100:不用free s長在stack會自己消失 "abc"長在bss不動的 09/24 08:15
ledia:why not s[BIG_ENOUGH_SIZE] = "abc"; ? 09/24 09:55
purpose:"abc"就想成一筆字串,是你的執行檔裡面的其中一個資源 09/24 09:56