→ hilorrk:(1) 9 存在0x000001這個位置, 事實上並沒有真正的儲存空間 05/05 16:40
→ hilorrk:儲存"陣列在哪", 在 compile time 就可以算出所有陣列相關 05/05 16:40
→ hilorrk:的位置. (2) 你猜的是對的. 理由同上 05/05 16:41
d 0x000001->0x0000001了..數據9到底在哪呢>_<..混淆中
※ 編輯: kingofsdtw 來自: 122.117.8.99 (05/05 16:44)
→ hilorrk:至於原本的問題, char *a, a 是一個指向 abc\0 開頭的指標 05/05 16:43
→ hilorrk:內容存的是'a'的位置. 其實應該要用 const char * 才正確 05/05 16:44
→ hilorrk:9存在0x000001, 對 array identifier 取址或直接印都會得 05/05 16:51
→ hilorrk:到 array 開頭的那個元素的位置. (但是取址得到的指標型態 05/05 16:52
→ hilorrk:並不相同) 05/05 16:52
→ hilorrk:我們並不需要真的在run-time allocate 一塊空間給 05/05 16:55
→ hilorrk:array identifier, 只要相應取代成 array 的第一個元素位 05/05 16:56
→ hilorrk:置就可以了. 但是在 compile-time 他們仍是不同 type. 05/05 16:57
→ linotwo:9 原本在機器碼裡面,當程式對 d 做完初始化,會把 05/05 16:57
→ linotwo:9 從機器碼搬到 d 所指向的 stack 位址 05/05 16:57
→ hilorrk:這是為什麼大家都會說 "array 就是指向開頭的 pointer" 05/05 16:58