看板 Programming 關於我們 聯絡資訊
最近在學指標的時候遇到一些問題 先po程式碼 int *p = 0, num[3][3]; srand(time(NULL)); for (p = &num[0][0]; p <= &num[3][3]; p++) { *p= rand()%10+1; p++; } for (p = &num[0][0]; p <= &num[3][3]; p++) { printf("%d\n", *p); p++; } 主要是練習利用指標達成陣列的應用 將儲存的隨機數存到指標所指向的位置 在執行的時候遇到一些問題 1.為什麼整個迴圈只跑了七次而不是九次? 2.當我把陣列改成4*4的時候會發生存取違規,請問這是為什麼呢? 3.為什麼我這樣寫指標的記憶體是位移8? 不是應該是4嗎? 4.想順便請教二維陣列的記憶體配置 謝謝解答Orz -- 作者 NerVGear (Phantom) 看板 Gossiping 標題 [問卦] 有沒有記得最熟課文的八卦 時間 Thu Apr 9 17:16:15 2015 ───────────────────────────────────────
goldman0204: 孫中山看精子往上游?04/09 17:16
goldman0204: 靠杯 打錯 腦子是想小魚逆游?打出精子= =04/09 17:17
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.43.242 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1450842015.A.AB0.html
longlongint: p<=num[3][3]1.171.51.106 12/23 11:48
剛剛發現PO上來少打的& 謝謝提醒 原本是有&的XD
jaid: 你for本身跟迴圈內都p++ 這樣一次就加兩個了42.66.189.50 12/23 13:39
把p++去掉了 但是卻出現違規存取 請問這是什麼問題呢? ※ 編輯: NerVGear (36.231.27.115), 12/23/2015 14:09:43
CaptainH: num[3][3] 本身就是違規存取了140.112.31.65 12/23 15:19
CaptainH: 改成 p <= & num[2][2]140.112.31.65 12/23 15:19
想請問為什麼是違規呢? ※ 編輯: NerVGear (36.231.27.115), 12/23/2015 15:35:18
IKAFIRE: 因為index 3其實是第4個元素114.136.12.35 12/23 16:45
對齁 一直忘記這個Orz 謝謝 ※ 編輯: NerVGear (223.136.61.4), 12/23/2015 17:46:36