美文网首页
OC中的*和&

OC中的*和&

作者: 不是假发是桂 | 来源:发表于2019-05-17 00:47 被阅读0次

    指针的创建

    Person *p = [Person alloc] init];
    p.name = "小明";
    

    这句代码的意义就是创建一个Person类型的指针,p才是我们创建的变量而不是*p。那这段代码为什么不这样写 Person* p = [Person alloc] init];

    别急,先看看这句代码
    int* a,b;
    按我的逻辑这就是定义了a,b两个指针,但是其实这样是定义了一个a指针和一个b整型。int *a,*b才是定义两个指针,既然定义一个指针的时候int* aint *a都行,那我们就保持*a这种方式好了。

    *和&的用法

    有这么一段经典代码。

    int a = 1;
    int *p = &a; 
    int b = *p; 
    

    思考一下b最终等价于什么?

    你可能会有这样的骚操作。

    *p = &a;
    b = *p; 
    这不是小学生就懂的逻辑吗?
    b = &a
    

    好,换成文章开头提到的写法
    int* p = &a;
    int b = *p;
    你说还行的通吗?p是一个int类型的指针int*,此*p非彼*p

    你可能想说。好吧,的确行不通 。我现在知道a 是什么,p是什么。但是&a和*p你没告诉我是什么,这怎么解。好,是时候告诉你用法了。
    &a 变量a的地址(&符号:取地址)
    *p p指针指向的变量(*符号:取变量)

    再思考一下b最终等价于什么?

    p是a的地址,*p不就是a吗。
    最后答案就是 b = a

    总结一下*号的两种用法
    声明int*和 引用*p

    相关文章

      网友评论

          本文标题:OC中的*和&

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