程序员开发者联盟iOS基础

iOS 指针详解

2019-09-25  本文已影响0人  72行代码
  1. 指针数组数组指针
    在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针的表达也十分多样。同理,指针数组就是存放指针的数组,其本质为数组。由于[ ]的优先级高于*的优先级,指针数组数组指针的表达可做如下表示:
int * p1 [10];  // 指针数组  p1先与“[ ]”结合构成一个包含10个元素的数组,int*表示的则是数组的内容
int (* p2)[10];  // 数组指针  p2先与“ * ”构成指针定义,int表示数组内容,[10]表示数组内元素个数
  1. 可以通过如下题目,进一步理解上面的讲解
int arrayName[4] = {10, 20, 30, 40};
int *p = (int *)(&arrayName + 1);
NSLog(@"%d", *(p - 1));
  1. (&arrayName + 1)&arrayName是数组的地址(等价于指向arrayName数组的指针
  2. 增加1会往后移动16个字节,开始是4个字节的位置,移动后就是16个字节后面的位置(也就是目前位置是20个字节
  3. 最后又赋值给int类型的指针pint类型占4个字节
  4. 所以(p - 1)就是减去4个字节,变成为16个字节的位置,输出的*(p - 1)值为40

附:我的博客地址

上一篇下一篇

猜你喜欢

热点阅读