箭头与点语法

Arrow vs dot syntax?

本文关键字:语法      更新时间:2023-10-16

我的一个朋友正在上一门数据结构的课程,而我正试图解释链表上下文中的区别。我确实应该知道这一点,但是由于一直关注于高级框架,我有点生疏了。我知道"箭头与指针一起使用",但仅此而已。

本质上,在C语言中,当访问某个变量的属性时点和箭头有什么区别?另外,因为我的心情特别愚蠢,这在c++中是一样的,还是有变化?

通常.是在你有一个结构体要直接访问时使用的,->是在你有一个指向结构体的指针并且需要解引用它来访问该结构体时使用的。

a->b(*a).b的语法糖。在C和c++中都是一样的

myPtr->someVariable(*myPtr).someVariable相同(解引用myPtr,访问成员)。如果您有*myPtr.someVariable,它将(myPtr.someVariable)视为指针(访问成员,将整个内容作为指针解引用)。

pointersomething->member

是一回事
(*pointersomething).member

它是一种理论上可以做到的快捷方式

*pointersomething.member

但是。操作符比*操作符具有更高的优先级,因此括号是必需的——因此箭头快捷方式也是必需的。