iOS 指针与数组

介绍

本篇把数组和指针放在一块写是由于两者都牵扯到一个地址问题,讨论见以下篇幅。数组

数组

咱们都知道数组的名字表明数组元素的首地址。所以咱们在取数组值时可以使用下标:bash

CGPoint pointA = CGPointMake(0.1, 0.2);
CGPoint pointB = CGPointMake(1.1, 1.2);
    
CGPoint arr[] = {pointA,pointB};

NSLog(@"%f",arr[1].y);//输出1.200000
复制代码

由于拿到了数组首地址(数组名),咱们一样能够使用地址偏移取值:spa

NSLog(@"%f",(*(arr + 1)).y);//输出1.200000
复制代码

指针

咱们一样定义一个存储单元类型为CGPoint的指针变量。并申请一块内存,代码以下:指针

CGPoint *  p;
p = malloc(sizeof(CGPoint) * 2);
复制代码

由于下标的使用遵循如下规则code

a[b] 等价于 *(a + b)
复制代码

咱们可向内存区域赋值:内存

p[0] = pointA;
p[1] = pointB;
复制代码

或者:get

*(p + 0) = pointA;
*(p + 1) = pointB;
复制代码

这样咱们就完成了赋值,取值仍然两种方式均可以:string

NSLog(@"%f",p[1].y);
NSLog(@"%f",(*(p + 1)).y);
复制代码

使用完毕记得须要手动释放这块内存:io

free(p);
复制代码

总结

由于数组名也即首地址,指针也是一个地址,所以操做上存在以上共性。class

相关文章
相关标签/搜索