美文网首页
iOS 指针

iOS 指针

作者: 大白龙 | 来源:发表于2020-05-17 11:32 被阅读0次

指针的定义

C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量

指针的优点

在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说有以下三点:

  1. 指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;

  2. C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;

  3. C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对象,但是这种操作可以由指针来完成,而且并不违背传值调用。

指针变量指向类型的作用:

1. 决定了指针变量所取空间内容的宽度

int value = 9000;
int *p3 = &value;
char *p4 = &value;
NSLog(@"sizeof(*p3):%d",sizeof(*p3));
NSLog(@"sizeof(*p4):%d",sizeof(*p4));

2020-05-17 11:26:58.034220+0800 MvvmDemo[12382:532778] sizeof(*p3):4
2020-05-17 11:26:58.034324+0800 MvvmDemo[12382:532778] sizeof(*p4):1

2. 决定了指针变量+1跳过的单位跨度

int value = 9000;
int *p3 = &value;
char *p4 = &value;
NSLog(@"p3:%p",p3);
NSLog(@"p4:%p",p4);
p3 ++;
p4 ++;
NSLog(@"p3+1:%p",p3);
NSLog(@"p4+1:%p",p4);

2020-05-17 11:30:07.176755+0800 MvvmDemo[12428:535933] p3:0x7ffee670508c
2020-05-17 11:30:07.176905+0800 MvvmDemo[12428:535933] p4:0x7ffee670508c
2020-05-17 11:30:07.177011+0800 MvvmDemo[12428:535933] p3+1:0x7ffee6705090
2020-05-17 11:30:07.177103+0800 MvvmDemo[12428:535933] p4+1:0x7ffee670508d

数据在内存里存储

数据在内存里是倒着存储的,通过一下demo测试

int aa = 0x01020304;
int *p = &aa;
NSLog(@"*p--value:0x%x",*p);
    
short *p1 = &aa;
NSLog(@"*p--value:0x%x",*p1);
    
char *p2 = &aa;
NSLog(@"*p--value:0x%x",*p2);

2020-05-17 11:19:27.054654+0800 MvvmDemo[12300:527063] *p--value:0x1020304
2020-05-17 11:19:27.054741+0800 MvvmDemo[12300:527063] *p--value:0x304
2020-05-17 11:19:27.054853+0800 MvvmDemo[12300:527063] *p--value:0x4

记录一下,以便日后查看。

相关文章

  • iOS监控-野指针定位

    iOS监控-野指针定位 iOS监控-野指针定位

  • iOS 方法中 单指针和双指针的区别

    iOS 双指针 iOS 单指针,双指针在方法参数中的区别 传入单指针,在方法内会复制一个临时的指针副本,在方法内操...

  • iOS 最详细的解析(数组与指针)笔试题

    iOS 最详细的解析(数组与指针)笔试题 iOS 最详细的解析(数组与指针)笔试题

  • 4-1 内存管理

    1.内存布局 2.iOS内存管理方案 [isa指针保存了内存管理的信息] 2.iOS内存管理方案 [isa指针...

  • iOS 指针(C指针)

    运算符 & 指针变量的定义 指针与数组

  • iOS指针

    之前一直对指针变量的概念一直模模糊糊,今天查了一些资料,做个记录。 OC中的内存地址: 一:指针变量自己所在的内存...

  • IOS指针

    指针在开发中占比很重,指针还是要弄懂的 看个例子 下面来看 p *p &p 三者区别 编译器为变量a开辟内存地址,...

  • iOS 指针

    指针的定义 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通...

  • iOS 指针

    可变对象与不可变对象 mutaStr 声明的是一个可变类型,mutaStr = @"123"; 将其指向了一个不可...

  • iOS指针

    OC中的内存地址:一:指针变量自己所在的内存地址(指针变量也是变量,也有内存地址)二:指针变量所指向的内容的内存地...

网友评论

      本文标题:iOS 指针

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