[問題] 關於指標使用是否合法

看板C_and_CPP作者時間13年前 (2010/09/24 01:13), 編輯推噓4(409)
留言13則, 8人參與, 最新討論串1/1
在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

09/24 01:15, , 1F
s="abc"是合法的,只是s內容不能修改,譬如s[0]='d'會錯
09/24 01:15, 1F

09/24 01:16, , 2F
這叫做string literal, google可找到說明
09/24 01:16, 2F

09/24 01:17, , 3F
你下面的寫法沒加上'\0'反而容易有問題
09/24 01:17, 3F

09/24 01:41, , 4F
這個 for 應該會炸掉... 遇到字串符號就要聯想到 char
09/24 01:41, 4F

09/24 01:41, , 5F
const *, 這樣才合理
09/24 01:41, 5F

09/24 01:44, , 6F
感謝樓上兩位強者大大^^
09/24 01:44, 6F

09/24 01:54, , 7F
看錯, 不會炸掉, 是不會跑 XD
09/24 01:54, 7F

09/24 01:55, , 8F
樓上沒說我都沒發現他的for怪怪的 XDDD
09/24 01:55, 8F

09/24 03:22, , 9F
for裡面東西擺錯順序了..
09/24 03:22, 9F

09/24 03:43, , 10F
s="abc" 這種在程式結束前是不是無法free掉?
09/24 03:43, 10F

09/24 08:15, , 11F
不用free s長在stack會自己消失 "abc"長在bss不動的
09/24 08:15, 11F

09/24 09:55, , 12F
why not s[BIG_ENOUGH_SIZE] = "abc"; ?
09/24 09:55, 12F

09/24 09:56, , 13F
"abc"就想成一筆字串,是你的執行檔裡面的其中一個資源
09/24 09:56, 13F
文章代碼(AID): #1CcuhGdh (C_and_CPP)