首页 > 学院 > 开发设计 > 正文

双指针

2019-11-09 14:48:11
字体:
来源:转载
供稿:网友

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”。 这里写图片描述

输出为: 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表