欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【C++】`->` 符号

【C++】`->` 符号

2025/6/27 19:27:37 来源:https://blog.csdn.net/qq_72175463/article/details/143261363  浏览:    关键词:【C++】`->` 符号

-> 符号在 C++ 中被称为成员访问运算符(Member Access Operator)。它用于访问类的成员变量或成员函数,特别是在指针的情况下。

具体用法

1. 访问类的成员变量

假设有一个类 ListNode

class ListNode {
public:int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {}
};

如果你有一个指向 ListNode 的指针 node,你可以使用 -> 访问其成员变量:

ListNode* node = new ListNode(5);
node->val = 10;  // 使用 -> 访问并修改 val 成员变量

在这个例子中,node->val 等价于 (*node).val,但 -> 更简洁和常用。

2. 访问类的成员函数

假设 ListNode 类有一个成员函数 printVal

class ListNode {
public:int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {}void printVal() {std::cout << "Value: " << val << std::endl;}
};

你可以使用 -> 调用该成员函数:

ListNode* node = new ListNode(5);
node->printVal();  // 使用 -> 调用 printVal 成员函数

在这个例子中,node->printVal() 等价于 (*node).printVal(),但 -> 更简洁和常用。

示例代码分析

在你的代码中,-> 符号被广泛使用,以下是一些具体的例子:

1. 在 mergeSort 函数中
ListNode* mergeSort(ListNode *head) {if (!head || !head->next) return head;// ...pre_slow->next = NULL;// ...ListNode *l1 = mergeSort(head);ListNode *l2 = mergeSort(slow);// ...
}
  • head->next 用于判断链表中是否有至少两个节点。
  • pre_slow->next = NULL; 用于断开链表,使其分成两部分。
2. 在 merge2SortedLists 函数中
ListNode* merge2SortedLists(ListNode *l1, ListNode *l2) {ListNode *head = new ListNode(0), *p = head;while (l1 && l2) {if (l1->val <= l2->val) {p->next = l1;p = p->next;l1 = l1->next;} else {p->next = l2;p = p->next;l2 = l2->next;}}// ...
}
  • l1->vall2->val 用于比较两个链表当前节点的值。
  • p->next = l1p->next = l2 用于将较小的节点链接到新链表中。
  • l1 = l1->nextl2 = l2->next 用于移动指针到下一个节点。

总结

-> 符号在 C++ 中用于通过指针访问类的成员变量和成员函数。它在链表操作中尤为常见,因为它简洁且直观。通过使用 ->,你可以方便地访问和操作链表中的节点及其成员。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词