双指针

iOS中我们遇到双指针,通常情况下我们是为erorr赋值例如:- (nullable NSDictionary*)attributesOfItemAtPath:(NSString )path error:(NSError *)error

那么”**”是干什么的呢?我们可以用一句话来描述:

只要看到一个方法的参数类型是**,此方法就是要给参数赋值

1.我们先来看一个普通的例子
这里写图片描述

输出为:
这里写图片描述

输出不是456。由此可见这样赋值是给参数赋不上值的,因为当我们把一个参数传到一个方法里面的时候,系统内部会做一个事情,系统会拷贝一个指针指向theStr指向的字符串对象。而“str = @”456””代表str这个指针指向了@”456”这个对象。而不是theStr这个指针指向了@”456”。在方法里的指针都是这样做的。

2.在C语言里我们为参数赋值,会传一个地址作为参数,&符号为取址运算符,&num为num的地址。系统也会拷贝一个指针,但是拷贝的指针指向的是num的地址。下例中*okNum是一个int类型的指针,它指向的是&num(num的地址)。通过修改指针指向的地址达到修改参数的目的。

这里写图片描述

输出为:
这里写图片描述

3.在OC中我们的对象的指针已经带了一个*号,所以就会出现双指针的情况。*str指向的是*theStr指向的内存地址。*str指向了@”456”说明指针 *theStr指向的地址改成了@”456”.及theStr的值变成了@”456”。
这里写图片描述

输出为:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值