解析ios系統(tǒng)關于數(shù)組和指針
大小:0.2 MB 人氣: 2017-09-26 需要積分:11
- int *p 的解釋:將來的指針是指向int類型
指針p + 1 說明內存地址會加上4個字節(jié)(因為是int占4個字節(jié))
如果是 double *p 指針p + 1內存地址會加上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);
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類型,所以內存地址會加上4個字節(jié)
?。?arrayName + 1)我們知道&arrayName是數(shù)組的地址(等價于指向arrayName數(shù)組的指針) 因為增加1,這個數(shù)組總共占16個字節(jié),所以內存地址會加上16個字節(jié)
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%