objective-c - 星号 * 在 Objective-C 中是什么意思?

标签 objective-c pointers

星号总是表示“嘿,那是一个指针!”,这是真的吗? 一个指针总是保存一个内存地址?

(是的,我知道 * 用于数学运算除外)

例如:

NSString* myString;

SomeClass* thatClass;

(*somePointerToAStruct).myStructComponent = 5;

我觉得我需要了解更多关于 Asterirsk (*) 的知识,而不是我在定义一个指向类的指针的变量时使用它。

因为有时我已经在参数声明中说参数变量是一个指针,我仍然必须在变量前面使用星号才能访问该值。这最近发生在我想以 [myObj myMethod:&myStruct] 的方式将结构的指针传递给方法之后,我无法从该结构访问组件值,即使我的方法声明已经说有一个参数( DemoStruct*)myVar 确实应该作为指向该 demostruct 的指针而为人所知,但我仍然总是要说:“伙计,编译器。听着!它是一个指针:”并写下:(*myVar).myStructComponentX = 5;

我真的真的真的不明白为什么我要说两次。并且仅在这种情况下。

当我在 NSString* myString 的上下文中使用 Asterisk 时,我可以随心所欲地访问 myString,而无需每次都告诉编译器它是一个指针。即喜欢使用 *myString = @"yep"。

这对我来说毫无意义。

最佳答案

* 实际上是一个取消引用指针的操作符。唯一一次它表示“嘿,我是一个指针”是在变量声明期间。

Foo* foo  // declare foo, a pointer to a Foo object
&foo      // the memory address of foo
*foo      // de-reference the pointer - gives the Foo object (value)

关于objective-c - 星号 * 在 Objective-C 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/581689/

相关文章:

iphone - 从 cellForRowAtIndexPath 返回多个 UITableViewCell 子类?

c# - 在 C# 中使用指针进行调试

c - 指向未初始化变量的指针

c - 插入二叉树时出现错误?

iphone - UINavigationBar 左侧有两个按钮

python - 从 Python 调用 Objective C 函数?

c - 是否有一个例子说明何时需要空指针才能在 C 中正确执行程序?

c - 结构定义中的结构指针

iphone - 可以在 viewController 的 'init' 完全执行之前调用 viewDidLoad 吗?

iphone - 尝试实现 UI LongPressGesture 时应用程序崩溃