美文网首页
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中的*和&

    指针的创建 这句代码的意义就是创建一个Person类型的指针,p才是我们创建的变量而不是*p。那这段代码为什么不这...

  • 按位或操作

    1. OC 和 Swift 中的区别 OC中定义Options Swift 中定义Options ** 在Swif...

  • OC中的Category(三)

    OC中的Category(三) OC中+initialize函数加载和调用 OC对象是在查找方法时判断自己有没有初...

  • iOS swift-字符串

    OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC...

  • OC-Runtime-Class结构和OC消息机制

    OC - Runtime - Class 结构 和 OC 消息机制 Runtime 源码中 Class 结构如下:...

  • Swift & JS

    1.使用JS文件中的方法和变量 2.直接使用OC中写JS语句来调用 3.OC中的方法写入JS,JS可以使用OC中的...

  • iOS中常见的关键字static 和class

    static在iOS中的作用包括OC和Swift,并讲解常用的情况.代码主要以OC为主,Swift中主要描述和另外...

  • Swift 和 OC 混编之 framework

    Swift 和 OC 混编之 framework 在主工程为 Swift 的 framework 中引用 OC 代...

  • 02-OC中对象的isa指针和superclass指针

    OC中的isa指针和superclass指针 OC中的对象分为哪一类 instance对象(实例对象) class...

  • Swift 闭包(二)

    OC Block 和 Swift 闭包相互调用 我们在 OC 中定义的 Block,在 Swift 中是如何调用的...

网友评论

      本文标题:OC中的*和&

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