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