C語言中指針與數(shù)組的關系
int *numbers[4] ={1,2,3,4};
int *p = (int *)(&numbers +1);
NSLog(@"%d", *(p-1));//結果 4
-
為什么結果是 4飒赃?
- 1.&numbers是指向數(shù)組的整個指針利花,并不是指向數(shù)組的第0個元素地址,(順便復習一下數(shù)組的指針和數(shù)組的第0個元素载佳,是相同的地址)
- 2.所以&numbers的跨度是整個數(shù)組炒事,也就是說numbers數(shù)組的跨度為0-16位(int 占用4個字符),所以輸出的就是4
指針p的加減法運算
- 指針p + N
- p里面存儲的地址值 + N * 指針所指向類型的占用字節(jié)數(shù)
- 指針p - N
- p里面存儲的地址值 - N * 指針所指向類型的占用字節(jié)數(shù)
數(shù)組名
- 存儲的是
數(shù)組首元素
的地址
- 等價于:一個指向
數(shù)組首元素
的指針
-
數(shù)組名 + 1
的跨度:數(shù)組首元素
的占用字節(jié)數(shù)
其他結論
-
&num + 1
的跨度:num
的占用字節(jié)數(shù)
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者