【发布时间】:2010-10-09 13:27:39
【问题描述】:
这是一个我仍然不明白的问题。
有时我不得不写:
NSString* myVariable;
myVariable = @"Hey!";
然后,例如我定义一个结构“DemoStruct”并获得一个使用它的变量。假设我有一个结构,其中包含 double 类型的 x 和 y 变量。
我想将此 var 传递给一个方法,该方法然后操作我的 var,并且我希望此操作对我将 var 传递给该方法的上下文产生影响。所以我需要一个指针,对吧。
我将它传递给这样的方法:
[someObject someMethod:&myVarThatUsesTheStruct]
该方法现在看起来像这样:
- (void)someMethod:(DemoStruct*)myVar {
(*myVar).x += 10;
}
在调用之前,结构的组件 x 可以说是 1000。现在,添加了 10,在方法调用之后是 1010。
但我真的很难不明白为什么我必须在方法中为 myVar 使用星号 *,因为我已经在方法头中说过 myVar 是指向 DemoStruct 的指针。我只是用 &myVarThatUsesTheStruct 传递内存地址。
有人能解释一下为什么会这样吗?
【问题讨论】:
标签: c objective-c pointers