美文网首页
iOS 指针(C指针)

iOS 指针(C指针)

作者: 7890陈 | 来源:发表于2019-06-28 00:48 被阅读0次

运算符 &

每个变量均对应内存中的一块内存空间,而内存中每个内存单元均是有地址编号的。
可以使用运算符 & 求某个变量的地址。
int a = 10;
// a表示变量的值
// &a 变量a的地址

指针变量的定义

类型 *变量名;
可以保存地址值(指针)的变量称为指针变量
int *b = &a;
// b 表示变量a的地址
// *b 表示地址指向的值
// &p 表示指针变量b的地址

NSLog(@"%d %p",a, &a);
// 20 0x7ffee01517ac
// 20 0x7ffee01517ac 0x7ffee01517a0
NSLog(@"%d %p %p",*b, b, &b);

指针与数组

int a[5] = {1,2,3,4,5};
int *p = a;
NSLog(@"%p %p",p,a);
// 0x7ffeed4817b0 
// 0x7ffeed4817b0
NSLog(@"%d",*p); // 1
// 所以a是数组的首地址

int *c = (int *)&a;
// c表示存数组的地址
NSLog(@"%p %p %p",c, &a, &a+1);
// 0x7ffee1b217b0 
// 0x7ffee1b217b0 
// 0x7ffee1b217c4  // 差了20 
// 数组长度为5, int 占4个字节 5 * 4 = 20

int *d = &a+1;
// d表示 a[4] 之后的地址,一个包含 5 个int元素的数组的首地址
NSLog(@"%d",*(d-2));  // 4
NSLog(@"%d",a[5-2]);  // 4

相关文章

网友评论

      本文标题:iOS 指针(C指针)

      本文链接:https://www.haomeiwen.com/subject/nikjcctx.html