→ prismwu:ex1 char *p 是指標不是陣列 指標本來就可以做加減 04/26 00:31
→ prismwu:ex2 compiler會過是因為型別沒錯 compiler默認陣列為指標 04/26 00:33
→ prismwu:但是char* p指向一個唯讀的字串 所以一跑想要寫東西就錯 04/26 00:34
→ loveme00835:陣列 "不是" 指標, 但是陣列會 decay 成指標, 值是第 04/26 00:35
→ loveme00835:一個元素的位址 04/26 00:35
→ kumusou:因為我是想說陣列名稱是常數指標 指標是變數指標 04/26 00:36
→ kumusou:所以指標變數的限制較少 所以我想說EX2中 p指標為什麼不 04/26 00:37
→ kumusou:WHY不能被更改? 她明明就只是一個變數指標又不是陣列名稱 04/26 00:38
→ kumusou:就是EX2讓我混亂了 = =感覺跟EX1有矛盾到.. 04/26 00:39
→ azureblaze:因為p指向唯讀記憶體 04/26 00:51
→ azureblaze:char p[100] = "xxxxx"會把"xxxxx"從唯讀複製到p裡 04/26 00:52
→ azureblaze:p* = "xxxxx" 會直接指向唯讀記憶體 04/26 00:53
→ azureblaze:所以正確寫法是const char *p = "xxxxx" 04/26 00:54
→ kumusou:有點懂了 所以是說"XXXXX"會被配置一塊記憶體位置(假設FF) 04/26 00:56
→ kumusou:然後P[100]="XXXXX"中 &p並不會等於FF 而只是複製FF的值 04/26 00:58
→ kumusou:所以可以被更改 而CHAR *P 的P就是FF 04/26 00:59
→ kumusou:而且FF是一塊不能被更改的記憶體位置 所以*p更改會錯 04/26 01:00
→ kumusou:這樣理解對嗎 @@ 04/26 01:00
→ diabloevagto:對 04/26 01:13