作者 主題: 如果宣告一個 char a1[1000]在記憶體內會是連續空間嗎?  (閱讀 4317 次)

0 會員 與 1 訪客 正在閱讀本文。

lbcb

  • 可愛的小學生
  • *
  • 文章數: 19
    • 檢視個人資料
如果宣告一個 char a1[1000];
在compiler會是分配出一個連續空間嗎?
3q

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
有差嗎  :roll:

在程式中還是一樣用 0 ~ 999 存取啊~~
就算不連續, 也不會影響存取方式..

還有, 陣列空間不是 compiler 配置的..

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
引述: "yamaka"
有差嗎  :roll:

有差!

不論是經由宣告,或是 malloc 函數所配置的記憶體位置,一定是「連續的」,
否則如何用 a1[0-999] 來存取呢?
索引是指標 * 宣告的變數 size 為 offset,加上 &a1 的記憶體位置才存取記憶體內真正的 value。

所以只要是被宣告或是被配置的記憶體位址,一定是連續的。

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
有差嗎---->阿婆放尿...大差了

如果不連續的話那指標就形同廢物了
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼