“。”与“。”有什么区别?和“ - >”访问C结构中的数据?我几次尝试都找不到任何区别。两者都提供我访问欲望数据“。”或“ - >”C struct accessor
回答
.
与结构一起使用。 ->
用于指针(指向结构)。
如果你的结构变量类型是指针Mystruct *mystructPtr
;
然后你应该使用->
(箭头运算符),否则使用.
(点运算符)是好的。
6.5.2.3结构和联合成员
约束
1的第一个操作数。运算符应具有原子的,合格的, 或不合格的结构或联合类型,第二个操作数应该指定该类型的成员。
2的第一操作数中的 - >操作员应键入“”指针 原子,合格,或不合格的结构“”或“”指针原子, 合格或不合格的联合“”,和第二个操作数应命名为所指类型的 成员。
语义
3一个后缀表达式,后跟一个。运算符和标识符 指定结构或联合对象的成员。值为指定成员的第 ,95),如果第一个表达式为左值,则该值为左值。如果第一个表达式具有限定类型,则结果为指定成员类型的合格版本 。
4后缀表达式后跟 - >运算符,标识符 指定结构或联合对象的成员。值为第一个表达式 指向的对象的指定成员的 ,并且是一个左值.96)如果第一个表达式是指向 限定类型的指针,则结果具有如此限定的版本指定的成员类型为 。
struct MyStruct
{
int a;
}
MyStruct *st;
st->a = 10;
MyStruct st2;
st.a = 10;
有比指针structs/unions
->
操作和滑动structs/unions
或任何其它类型之间不存在连接,其他。 ->
正在访问指针指向的struct/union
中的成员。意思是,创建与成员struct/union
之后,struct/union
成员可以通过两种如果.
持有struct/union
本身或->
访问,如果抱着pointer
到struct/union
例子:
// creating one instance of struct s, and a pointer to an instance of struct s. struct s is a struct holding one int called 'data'.
struct s{int data;}struct_s_instance, *struct_s_instance_pointer = malloc(sizeof(struct s));
struct_s_instance.data = 3; // access using the '.' operator
struct_s_instance_pointer->data = 4; // pointer access using the '->' operator
printf("%d-%d", struct_s_instance.data, struct_s_instance_pointer->data);
你不能data
使用.
(即struct_s_instance_pointer.data
)或data
使用->
(即struct_s_instance->data
)在struct_s_instance
中使用struct_s_instance_pointer
。这些是完全不同的东西。
注意给出的指针,如struct_s_instance_pointer
时,你可以derefernce它:*struct_s_instance_pointer
,然后运营商.
可以而且应该被使用:(*struct_s_instance_pointer).data
“*运算符和结构体,联合体之间没有联系*” - 确定有 –
@FelixPalmen如何访问结构体中的数据(而不是指针)使用-_> _? – CIsForCookies
如何使用' - >'来访问*不是结构或联合成员的对象? –
的->
运营商只是语法糖:
x->y
与
(*x).y
括号是必要的,因为第e .
运营商的优先级高于运营商的优先级。
- 1. 的C指针问题:&(* struct->结构)
- 2. const C Struct数组struct struct数组
- 3. Xcode C++ Struct Order
- 4. accessor和mutator?
- 5. 私人领域与公共accessor在c + +
- 6. 这会被视为Accessor吗? (C++)
- 7. C struct里面的结构struct
- 8. struct EMPLOYEE {...} em1,em2;或者struct EMPLOYEE {...};
- 9. C++ struct array copy
- 10. Lua和C-struct
- 11. C - struct problems - writing
- 12. C++ struct和container
- 13. 使用pycparser解析struct C中的struct?
- 14. OCCI - setDataBuffer +矢量<struct>
- 15. jquery accessor id vs class?
- 16. Objective C Class or struct?
- 17. Swig - 包装C struct
- 18. 的std ::设置< struct >在结构C++
- 19. C++ STL的地图,其关键是shared_ptr的<struct tm>
- 20. 二进制搜索矢量< struct S>在c + +?
- 21. Private Accessor类忽略通用约束
- 22. WSASend:发送int或struct
- 23. Swift - C函数和struct tm
- 24. struct struct
- 25. C++传递一个矢量<矢量<STRUCT>>用于修改
- 26. F# - >通用型 - 多不是struct
- 27. struct array vs object array c#
- 28. 如何编写accessor和mutator?
- 29. MS UnitTest - Private Accessor not always recognized
- 30. accessor和mutator方法混乱
- >当您尝试从指针调用smt到结构 时使用。当您创建对象并致电 –
如果您找不到任何区别,请尝试用另一个替换另一个,而不更改其他任何内容,并查看您的程序是否仍在编译:-) – dasblinkenlight
实际上没有代码,这两个东西没有区别。一个将永远不能编译 –