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

数据结构:成员运算符(.)+ 指向运算符(->)

在C和C++中,成员运算符(.)和指向运算符(->)用于访问结构体(或类)的成员。尽管它们的目的相似,但它们的用法根据你是直接操作结构体(或类)的实例,还是通过指向该实例的指针来操作而有所不同。

设 p 为指向链表结点的结构体指针,则* P 表示结点本身,因此可用 p -> data 或(* p ). data 访问* p 这个结点的数据域,二者完全等价。

成员运算符(.)左边是一个普通的结构体变量,而指向运算符(->)左边是一个结构体指针。

通过(* p ). next 可以得到指向下一个结点的指针,因此(*(* p ). next ). data 就是下一个结点中存放的数据,或者直接用 p -> next -> data

成员运算符(.

当你有一个结构体(或类)的实例时,你可以使用.运算符来访问其成员(包括属性、方法等)。语法如下:

结构体类型 实例名;  
实例名.成员名;

或者,对于C++中的类:

ClassName object;  
object.member;


这里,成员名是你想要访问的结构体或类的成员的名称。

指向运算符(->

当你有一个指向结构体(或类)实例的指针时,你需要使用->运算符来访问其成员。这是因为指针本身不直接包含成员的值或地址,而是存储了指向结构体(或类)实例的指针。语法如下:

结构体类型 *指针名 = &实例名;  
指针名->成员名;

或者,对于C++中的类:

ClassName *ptr = &object;  
ptr->member;
这里,指针名是指向结构体(或类)实例的指针,成员名是你想要通过指针访问的成员的名称。

示例

假设我们有以下结构体定义:

typedef struct {  
    int id;  
    char name[50];  
} Person;
我们可以这样使用.和->运算符:
Person person;  
person.id = 1;  
strcpy(person.name, "Alice");  
  
Person *pPerson = &person;  
pPerson->id = 2;  
strcpy(pPerson->name, "Bob");
在上面的例子中,我们首先通过.运算符直接访问person实例的成员。然后,我们定义了一个指向person的指针pPerson,并通过->运算符访问相同的成员。两种方式都能达到相同的目的,但使用哪种方式取决于你是否是通过指针来访问结构体(或类)的成员。

http://www.kler.cn/news/323976.html

相关文章:

  • 创建javaWeb项目(详细版本)2021年2月
  • 【递归】8. leetcode 671 二叉树中第二小的节点
  • 1. IP地址介绍
  • SpringCloud无法注册Nacos和配置中心
  • localhost 自动被 redirect 到 https 地址的问题
  • 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)
  • 企业级Windows server服务器技术(1)
  • Token: 数据库、存储系统和API安全的应用
  • pcs集群表决盘故障导致主机reboot
  • @Transactional导致数据库连接数不够
  • 在pycharm中怎样debug一个网页程序
  • 极限基本类型小结
  • 微服务Redis解析部署使用全流程
  • WPF入门教学十八 动画入门
  • C++编程:实现简单的高精度时间日志记录小程序
  • 大厂AI必备数据结构与算法——链表(三)详细文档
  • AI电销机器人是当代电销企业的新宠,智能机器人部署
  • 设计模式之策略设计模式
  • vue仿chatGpt的AI聊天功能--大模型通义千问(阿里云)
  • 鼎跃安全丨多功能气体检测报警系统:工业安全守护者
  • 菱形继承的类对父类的初始化、组合、多态、多态的原理等的介绍
  • C#基础:掌握控制流语句,构建灵活的程序逻辑
  • Python中的“属性与方法”:解锁面向对象编程的秘密
  • 2024年9月25日,Intel发布至强6900P系列:128核心504MB缓存,终于追上AMD!
  • 跨多场景帧重建DENSER:使用小波估计进行城市动态场景重构
  • 机器学习:探索未知边界,解锁智能潜力
  • 华为-单臂路由
  • 服务运营 | 运营前沿:生成式AI改变医疗保健的运作方式
  • SignApp签名工具/美淘iOS在线签名工具/后端PHP
  • MATLAB与Docker Compose:实现微服务API文档的自动化部署与Vue.js集成