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.mzph.cn/bicheng/70937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地部署DeepSeek Nodejs版

目录 1.下载 Ollama 2.下载DeepSeek模型 3.下载 ollama.js 1.下载 Ollama https://ollama.com/ 下载之后点击安装&#xff0c;等待安装成功后&#xff0c;打开cmd窗口&#xff0c;输入以下指令&#xff1a; ollama -v 如果显示了版本号&#xff0c;则代表已经下载成功了。…

UE5中的快捷键汇总

以下是Unreal Engine 5&#xff08;UE5&#xff09;中一些常用的快捷键大全&#xff0c;涵盖编辑器操作、视口导航、蓝图编辑等多个方面(会持续补充作为笔记存在)&#xff1a; 通用快捷键 快捷键功能Ctrl S保存当前关卡Ctrl Shift S保存所有Ctrl Z撤销Ctrl C复制Ctrl V…

java项目之足球联赛管理系统源码(ssm+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的足球联赛管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 足球联赛管理系统的主要使用者…

HttpServletRequest 作用

HttpServletRequest 接口在 Java Servlet API 中扮演着至关重要的角色&#xff0c;它是 Servlet 处理客户端 HTTP 请求的核心对象。 每次客户端&#xff08;例如浏览器&#xff09;向服务器发送一个 HTTP 请求时&#xff0c;Servlet 容器&#xff08;例如 Tomcat&#xff09;都…

【Kubernetes的SpringCloud最佳实践】Spring Cloud netflix 能否被K8s资源完全替代?

在部署Spring Cloud微服务到Kubernetes&#xff08;K8s&#xff09;时&#xff0c; Spring Cloud netflix 是否需要完全替代&#xff1f;或者可以部分替代&#xff0c;结合使用&#xff1f; 例如&#xff0c;服务发现和负载均衡可以交给K8s处理&#xff0c; 但某些功能如API网关…

SQL 大厂面试题目(由浅入深)

今天给大家带来一份大厂SQL面试覆盖&#xff1a;基础语法 → 复杂查询 → 性能优化 → 架构设计&#xff0c;大家需深入理解执行原理并熟悉实际业务场景的解决方案。 1. 基础查询与过滤 题目&#xff1a;查询 employees 表中所有薪资&#xff08;salary&#xff09;大于 10000…

【C】链表算法题7 -- 环形链表||

leetcode链接https://leetcode.cn/problems/linked-list-cycle-ii/description/ 问题描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到…

uniapp开发h5部署到服务器

1.发行>网站-PC Web或手机H5&#xff08;仅适用于uniapp&#xff09; 2.填写网站域名 3.编译成功后会生成一个unpackage文件夹找到下面的h5 4.接下来会使用一个工具把h5里面的文件放到服务器上面&#xff08;WinSCP使用其他能部署的工具也行&#xff09; 5.登录 6.登录成功后…

PyTorch Lightning Trainer介绍

PyTorch Lightning 的 Trainer 是框架的核心类&#xff0c;负责自动化训练流程、分布式训练、日志记录、模型保存等复杂操作。通过配置参数即可快速实现高效训练&#xff0c;无需手动编写循环代码。以下是详细介绍和使用示例&#xff1a; Trainer 的核心功能 自动化训练循环 自…

亚信安全正式接入DeepSeek

亚信安全致力于“数据驱动、AI原生”战略&#xff0c;早在2024年5月&#xff0c;推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体&#xff0c;为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来&#xff0c;亚信安全人工智能实验室利…

小白零基础如何搭建CNN

1.卷积层 在PyTorch中针对卷积操作的对象和使用的场景不同&#xff0c;如有1维卷积、2维卷积、 3维卷积与转置卷积&#xff08;可以简单理解为卷积操作的逆操作&#xff09;&#xff0c;但它们的使用方法比较相似&#xff0c;都可以从torch.nn模块中调用&#xff0c;需要调用的…

视频基础操作

1.1. 例子 读取mp4格式的视频&#xff0c;将每一帧改为灰度图&#xff0c;并且打上水印&#xff08;“WaterMark”&#xff09;,并将其输出保存为out.mp4&#xff0c;在这个例子中可以看到视频读取&#xff0c;每帧数据处理&#xff0c;视频保存的整体流程简单示例 import cv…

21vue3实战-----git husky和git commit规范

21vue3实战-----git husky和git commit规范 1.husky工具1.1目的1.2如何做到这一点?1.3步骤 2.git commit规范2.1使用Commitizen自动生成规范格式供选择2.2代码提交风格2.3代码提交验证 之前在https://blog.csdn.net/fageaaa/article/details/145474065文章中已经讲了在vue项目…

Unity3D 类MOBA角色控制器 开箱即用

Github: Unity3D-MOBA-Character-Controller 觉得好用麻烦点个Star感谢&#xff01;

Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?

目录 基于 ZooKeeper 管理消费 offset 原理 缺点 新版本基于内部主题管理消费 offset 原理 优点 示例代码(Java) 在 Kafka 早期版本中,消费者的消费偏移量(offset)是存储在 ZooKeeper 中的,但由于 ZooKeeper 并不适合高频读写操作,从 Kafka 0.9 版本开始,消费偏…

使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南

在网络应用中&#xff0c;代理服务器是用于中转用户请求和服务端响应的工具。正向代理主要用于客户端与外部服务器之间的访问代理&#xff0c;帮助客户端隐藏其 IP 地址或访问受限资源。本文将详细介绍如何使用 Nginx 搭建正向代理服务器&#xff0c;特别是针对 HTTPS 网站的代…

arduino扩展:Arduino Mega 控制 32 个舵机(参考表情机器人)

参考&#xff1a;表情机器人中使用22个舵机的案例 引言 在电子制作与自动化控制领域&#xff0c;Arduino 凭借其易用性和强大的扩展性备受青睐。Arduino Mega 作为其中功能较为强大的一款开发板&#xff0c;具备丰富的引脚资源&#xff0c;能够实现复杂的控制任务。舵机作为常…

PyQt学习记录03——批量设置水印

0. 目录 PyQt学习记录01——加法计算器 PyQt学习记录02——串口助手 1. 前言 本次主要是为了学习Qt中的 QFileDialog 函数&#xff0c; QFileDialog.getExistingDirectory&#xff1a;用于选择文件夹&#xff0c;返回的是一个文件夹路径。 QFileDialog.getOpenFileName&…

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题&#xff1a;在默认的Visual Studio中&#xff0c;选择单行代码后&#xff0c;按下Ctrl /键会将代码注释掉&#xff0c;但再次按下Ctrl /键时&#xff0c;会进行双重注释&#xff0c;这不是我们想要的。 实现效果&#xff1a;当按下Ctrl /键会将代码注释掉&#xff0c;…

社区版IDEA中配置TomCat(详细版)

文章目录 1、下载Smart TomCat2、配置TomCat3、运行代码 1、下载Smart TomCat 由于小编的是社区版&#xff0c;没有自带的tomcat server&#xff0c;所以在设置的插件里面搜索&#xff0c;安装第一个&#xff08;注意&#xff1a;安装时一定要关闭外网&#xff0c;小编因为这个…