iOS 指针(C指针)

运算符 &

每个变量均对应内存中的一块内存空间,而内存中每个内存单元均是有地址编号的。
可以使用运算符 & 求某个变量的地址。
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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,812评论 3 44
  • 第十章 指针 1. 地址指针的基本概念: 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为...
    坚持到底v2阅读 4,731评论 2 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,146评论 1 51
  • 一、指针与指针变量 指针:就是地址,一个变量的指针就是这个变量的存储地址。 指针变量:用来存放指针(地址)的变量,...
    竹与豆阅读 3,607评论 0 0
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,186评论 0 50