您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機編程>

解析ios系統(tǒng)關于數(shù)組和指針

大?。?/span>0.2 MB 人氣: 2017-09-26 需要積分:11
指針是如何加減運算:
  - int *p 的解釋:將來的指針是指向int類型
  指針p + 1 說明內(nèi)存地址會加上4個字節(jié)(因為是int占4個字節(jié))
  如果是 double *p 指針p + 1內(nèi)存地址會加上8個字節(jié)(因為是double占8個字節(jié))
  - 通過上述解釋我們得出一個公式:
  指針p + n = p當前的地址值 + n *指向類型所占用的字節(jié)數(shù)
  指針p - n = p當前的地址值 - n * 指向類型所占用的字節(jié)數(shù)
  數(shù)組與指針:
  int arrayName[4] = {10, 20, 30, 40};
  上面的數(shù)組占16個字節(jié)(原因:每個int類型占4個字節(jié),這個數(shù)組有4個int類型,所以占16個字節(jié))
  arrayName就是數(shù)組名
  數(shù)組名 :表示數(shù)組首元素的地址,相當于一個指向數(shù)組首元素的指針
  相信你已經(jīng)有點蒙圈了,我們在進一步解釋一下:
  NSLog(@“%p %p”, arrayName, arrayName + 1);
  NSLog(@“%p %p”, &arrayName, &arrayName + 1);
  解析ios系統(tǒng)關于數(shù)組和指針
  1. arrayName 與 &arrayName
  arrayName 是數(shù)組名,所以打印出來是數(shù)組首元素的地址
  &arrayName 含義就是數(shù)組的地址(等價于指向arrayName數(shù)組的指針),因為沒增加1,所以數(shù)組的地址就是數(shù)組首元素的地址所以 arrayName 《-》&arrayName 打印出的地址是一樣的
  2.(arrayName + 1) 與 (&arrayName + 1)
 ?。╝rrayName + 1)通過上述解釋我們知道(arrayName + 1)指針是指向int類型,所以內(nèi)存地址會加上4個字節(jié)
 ?。?arrayName + 1)我們知道&arrayName是數(shù)組的地址(等價于指向arrayName數(shù)組的指針) 因為增加1,這個數(shù)組總共占16個字節(jié),所以內(nèi)存地址會加上16個字節(jié)

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?