当前位置: 首页 > news >正文

C++中什么时候用. 什么时候用->

学了一年C++今天出了一个大岔子,因为太久没有做链表类型题目了,并且STL用惯了今天遇到一题,写的时候发现完全不对劲,搞慌了,首先我们看题目

2. 两数相加

再看我第一次的解答,先不论结果对不对

 

错的行为有很多,比如我认为两个节点相连就是一个链表 (理没错),我忘了第一个节点要new空间

在写题的过程中,突然忘了什么时候用.  什么时候用->(平常用class用习惯了,顺手了,这种情况还突然懵了)

那么什么时候用.  什么时候用->呢?

在 C++ 中,.->都是用于访问对象成员的操作符,但它们的使用场景有所不同:

.操作符

用于直接访问对象的成员:当你有一个具体的对象实例,并且要访问该对象的成员变量或成员函数时,使用.操作符。例如,如果你有一个类Person,其中包含成员变量name和成员函数sayHello(),可以这样使用:

#include <iostream>
#include <string>class Person {
public:std::string name;void sayHello() {std::cout << "Hello, my name is " << name << std::endl;}
};int main() {Person p;p.name = "Alice";  // 使用.操作符访问成员变量p.sayHello();      // 使用.操作符访问成员函数return 0;
}

用于访问结构体或共用体的成员:在 C 语言和 C++ 中,对于结构体和共用体类型的变量,也使用.操作符来访问其成员。

->操作符

用于通过指针访问对象的成员:当你有一个指向对象的指针时,需要使用->操作符来访问对象的成员。例如:

#include <iostream>
#include <string>class Person {
public:std::string name;void sayHello() {std::cout << "Hello, my name is " << name << std::endl;}
};int main() {Person* p = new Person;p->name = "Bob";  // 使用->操作符访问成员变量p->sayHello();    // 使用->操作符访问成员函数delete p;return 0;
}

在链表等数据结构中使用:在处理链表等数据结构时,通常会使用指针来遍历链表节点,此时就会使用->操作符来访问节点中的成员。例如,有一个链表节点结构体ListNode,包含数据成员data和指向下一个节点的指针next,可以这样使用

#include <iostream>struct ListNode {int data;ListNode* next;
};int main() {ListNode* head = new ListNode;head->data = 1;head->next = new ListNode;head->next->data = 2;head->next->next = nullptr;// 遍历链表并输出数据ListNode* p = head;while (p!= nullptr) {std::cout << p->data << " ";p = p->next;}// 释放链表内存p = head;ListNode* next;while (p!= nullptr) {next = p->next;delete p;p = next;}return 0;
}

那么本题的正确答案

http://www.lryc.cn/news/534904.html

相关文章:

  • 从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
  • 【Python深入浅出】Python3正则表达式:开启高效字符串处理大门
  • Vue.js Vue CLI 安装与使用
  • 科技的尽头:在有限与永恒的夹缝中寻找文明的真谛
  • 【牛客】动态规划专题一:斐波那契数列
  • java8、9新特性
  • 作业:zuoye
  • redis底层数据结构——链表
  • 问题解决 4S 法
  • SQL-leetcode—1407. 排名靠前的旅行者
  • 机器学习(李宏毅)——Transformer
  • React进阶之React状态管理CRA
  • 攻克AWS认证机器学习工程师(AWS Certified Machine Learning Engineer) - 助理级别认证:我的成功路线图
  • 前端开发环境
  • Web自动化测试—测试用例流程设计
  • HTML全局属性与Meta元信息详解:优化网页的灵魂
  • day001 折半查找/二分查找
  • Linux 资源监控:优化与跟踪系统性能
  • java安全中的类加载
  • Node.js调用DeepSeek Api 实现本地智能聊天的简单应用
  • 分布式服务框架 如何设计一个更合理的协议
  • Unity使用iTextSharp导出PDF-02基础结构及设置中文字体
  • Kafka因文件句柄数过多导致挂掉的排查与解决
  • 【LeetCode Hot100 多维动态规划】最小路径和、最长回文子串、最长公共子序列、编辑距离
  • PRC框架-Dubbo
  • 智能检测摄像头模块在客流统计中的应用
  • [LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别
  • 【CubeMX+STM32】SD卡 U盘文件系统 USB+FATFS
  • 在JVM的栈(虚拟机栈)中,除了栈帧(Stack Frame)还有什么?
  • # 解析Excel文件:处理Excel xlsx file not supported错误 [特殊字符]