obj*_*sea 6 c pointers structure
在学习C时,我刚开始研究结构指针并提出一些问题.
假设我要创建一个名为结构myStructure,然后创建一个指针myStructurePointer,指向myStructure.是*myStructurePointer,有myStructure两种引用相同的方法吗?如果是这样,为什么有必要使用 - >运算符?这似乎更容易使用*myStructurePointer.variable_name比myStructurePointer->variable_name.
你是对的,
(*structurePointer).field
Run Code Online (Sandbox Code Playgroud)
与...完全相同
structurePointer->field
Run Code Online (Sandbox Code Playgroud)
但是,你拥有的是:
*structurePointer.field
Run Code Online (Sandbox Code Playgroud)
哪个真的试图.在指针变量上使用运算符,然后取消引用它的结果 - 它甚至不会编译.如果你想让表达式相同,你需要在上面第一个例子中使用括号.在这个简单的例子中,箭头至少可以节省几次击键次数.
使用的->,如果你想在结构领域具有指针类型,也许到另一个结构的情况下,可能会更有意义:
structurePointer->field->field2
Run Code Online (Sandbox Code Playgroud)
与
(*(*structurePointer).field).field2
Run Code Online (Sandbox Code Playgroud)
问题*myStructurePointer.variable_name是*绑定不那么紧.,所以它会被解释为*(myStructurePointer.variable_name).相当于myStructurePointer->variable_name是(*myStructurePointer).variable_name,在需要括号.
a->b和之间没有区别(*a).b,但->更容易使用,特别是如果有嵌套结构.(*(*(*a).b).c).d比'a> b-> c-> d`更不易读.