是真的吗,星号总是意味着“嘿,那是一个指针!” 指针总是保存一个内存地址?
(是的,我知道 * 用于数学运算的例外情况)
例如:
NSString* myString;
或者
SomeClass* thatClass;
或者
(*somePointerToAStruct).myStructComponent = 5;
我觉得我需要了解的关于 Asterirsk (*) 的知识比我在定义作为类指针的变量时使用的要多。
因为有时我在参数的声明中已经说过 Parameter 变量是一个指针,但我仍然必须在 Variable 前面使用星号才能访问该值。这最近发生在我想以 [myObj myMethod:&myStruct] 之类的方式将结构的指针传递给方法之后,即使我的方法声明已经说有一个参数,我也无法从该结构访问组件值( DemoStruct*)myVar 确实应该被称为指向该 demostruct 的指针,但我仍然不得不说:“伙计,编译器。听着!它 IIISSS 是一个指针:”并写:(*myVar).myStructComponentX = 5;
我真的真的真的不明白为什么我要说两次。并且仅在这种情况下。
当我在 NSString* myString 的上下文中使用 Asterisk 时,我可以随心所欲地访问 myString,而无需每次都告诉编译器它是一个指针。即喜欢使用 *myString = @"yep"。
这对我来说毫无意义。