我知道使用指针的好处,但是双指针是我真正不明白的。有人告诉我,当您希望该方法修改传入的参数值时,将使用双指针。给定以下示例,将5
打印在日志中。那么,为什么要在void changeInt(int **i)
中使用双指针呢?
int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int *a = 1;
changeInt(&a);
NSLog(@"%i", a);
[pool drain];
return 0;
}
void changeInt(int *i)
{
*i = 5;
}
答案 0 :(得分:1)
不需要带标量(int)的双指针。显然,您需要的只是一个指针。
但是对象已经是指针。因此,要对一个对象执行相同的操作,您需要一个双指针。典型的用例是NSError**
:
+ (id)stringWithContentsOfFile:(NSString *)path
encoding:(NSStringEncoding)enc
error:(NSError **)error