箭头与点语法
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
但是。操作符比*操作符具有更高的优先级,因此括号是必需的——因此箭头快捷方式也是必需的。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- 什么文件可以修改 atom 的C++语法?
- 创建模板嵌套类实例的语法?
- C++语法差异:二维和一维数组(指针算术)
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么