为什么有时使用点语法访问结构中的成员变量,但使用其他时间->
?我一直在学习iOS中的一些C库,并在将结构传递给函数时,似乎经常使用箭头语法。我收集它与指针/内存地址/ C类型的东西有关,但我不确定''之间的意义。和' - >'是在访问结构体上的字段时。C中的结构语法( - >)
回答
.
运算符用于访问结构或联合的成员。 ->
被定义为使得a->b
其中b
是*a
的结构或联合成员等于(*a).b
。这个语法糖为了方便而存在,因为一直写着(*a).b
是很乏味的。请记住:如果a
是指针,则使用->
,如果它是结构或联合,请使用.
。
一些更新的语言(如Go)取消了区分,但没有使编译器复杂化,因为您需要执行更复杂的类型检查以查找如何编译.
,所以我猜这就是为什么Ken Thompson没有那时候不会那么做。
所以确保我已经得到它。这些句法正确吗? AStruct * structPointer =(AStruct *)someParam; // structPointer-> aMember // AStruct structVar = * structPointer; // structVar.aMember // –
嗯,它的意见似乎不让我使用星号* –
@AlexanderBollbach尝试逃避星号是这样的:'\ *'。或者甚至更好,把你的代码反引号:'*(AStruct).someParam'。 – fuz
- 1. 结构中的语法[c]
- 2. 括号中的C结构语法
- 3. C结构语法问题
- 4. 澄清C结构语法
- 5. 了解C++结构语法
- 6. C++ Windows窗体的typedef结构语法?
- 7. 有趣的C结构语法/类型
- 8. c结构语法与赋值?
- 9. Pushbullet语法结构
- 10. Acessing结构>目标C
- 11. 结构的app.config语法
- 12. C语言结构为String
- 13. C语言结构式
- 14. C语言,文件结构
- 15. 在结构中使用C++风格的字符串时,cin >>的正确语法是什么?
- 16. 在C++中初始化结构的语法是什么?
- 17. C++中的抽象语法树:类与结构
- 18. C中的唯一静态结构语法?
- 19. 模板类中新结构的C++语法
- 20. C:结构用法
- 21. C++ - 印刷地图<结构,结构,构造>类型
- 22. 无法在c中的结构中声明结构成员
- 23. C#继承 - >的类层次结构
- 24. 的C指针问题:&(* struct->结构)
- 25. 结构成员语法
- 26. 嵌套结构语法
- 27. 枚举和结构代替C语言中的switch语句的用法
- 28. VB.NET - > C#语法问题
- 29. c中的结构
- 30. C++中的结构*
当你有指向struct的指针时,使用' - >'。当你有struct对象时使用'.'。 – ctomek