如何解决p.a和p-> a有什么区别,其中p是指针?
| p.a和p-> a有什么区别,其中p是指针?或者它们只是同一件事。解决方法
.
运算符实际上是结构成员访问的运算符。
struct Foo
{
int bar;
int baz;
} aFoo;
aFoo.bar = 3;
如果您有一个指向结构的指针(非常常见),则可以使用指针解引用和.
运算符来访问其成员。
struct Foo *p;
p = &aFoo;
(*p).baz = 4;
需要括号是因为because0比than5具有更高的优先级。上面提到的由某物指向的结构的成员的引用非常普遍,因此引入了“ 6”作为简写。
p->baz = 4; // identical to (*p).baz = 4
如果p是一个指针,那么您永远不会在纯C中看到p.anything
,至少在编译的任何东西中都看不到。但是,它用于表示Objective-C中的属性访问,这是IMO的错误。
,是的,您不能在指针上执行p.a
,点运算符需要一个实际实例,即适当的struct
类型的值。
请注意,“在引擎盖下”,p->a
等同于ѭ12equivalent,但更易于键入和阅读。从来没有人使用后一种形式,但是有时它很方便理解箭头运算符的功能。
,尝试(* p).a或(&p)-> a,其中p分别是指针和实例;-)
,如果p是指针,则p.a不是有效的语法。
,它的编译时错误。p-> a仅有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。