Re: [問題] char* char[]
※ 引述《eyhuang (HYY)》之銘言:
: ※ 引述《LPH66 (IWH68S0XZ8M89)》之銘言:
: : 以上你所說的只有第一行不太對
: : 現在就我所知的compiler實作都是把常數字串集合在一起 然後那區設唯讀
: : 所以"123"就代表那一區中"123"這個常數字串的位置
: : 因此char *test="123"就是把test指過去
: : 而"456"和"123"是同一區的不同的地方 所以再用test="456"就是再指到那個地方去這樣
: : (不然想想看 char *foo="bar"; foo="QWERTYUIOPASDFGHJKLZXCVBNM"; 這個情形
: : 兩次中foo還是指向同一個地方嗎?)
: : 然後我所謂的"改那邊就不對了"指的是原文有提到的segment fault
: : 因為那個字串是在唯讀區所以去改它就會有segment fault這樣
: : 後面三行很正確 如果你確定某個char *只會接常數字串
: : 那就乾脆把它宣告成const char *來防呆
: : (我一直覺得const是拿來防呆用的...XD)
: 哦~原來是這樣 char *test="123"; test="456";
: 那字串是常數是說不能改123的內容 可是我把test指到456去
: 或是test++;是可以的嗎?
那test指到的"123"這塊記憶體的life time是多久?
是看compiler怎麼implement嗎?
第三行....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.231.243
推
12/26 01:23, , 1F
12/26 01:23, 1F
→
12/26 02:38, , 2F
12/26 02:38, 2F
→
12/26 02:39, , 3F
12/26 02:39, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
11
17