美文网首页
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 指针

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