结构体的(.)操作符和(->)操作符区别

一、结构体的 . 操作符
二、结构体的 -> 操作符
三、点操作符的优先性和结合性
四、总结

一、结构体的 .操作符

1.结构体成员的直接访问:结构体变量的成员是通过操作符 . 访问的。

二、结构体的->操作符

1.结构体成员的间接访问:当我们拥有一个 指向结构体的指针 ,我们访问这个结构的成员的方式是 对指针执行间接访问操作
然后再通过 点操作符 访问其成员。但是 点操作符 的优先级大于 间接访问操作符,因此需要使用括号,确保间接访问先进行。
即访问指向结构体的指针需要通过间接访问来进行

例子:

struct complex
{  float f;};
void func(struct conmplex* cp);

函数可以使用如下表达式来进行访问 f
(* cp).f ———— 即通过此方式来进行访问结构体中的成员f

对指针进行 间接访问 将访问结构体,再用点操作符访问其成员。
由于该概念不是很方便,于是C语言提供了一个更为方便的操作符来完成这项工作———— ->操作符(也成箭头操作符)
和点操作符一样,箭头操作符接收两个操作数,但左操作数必须是一个指向结构体的指针
cp->f 等同于 (* cp).fs

三.点操作符的优先性和结合性:

从下表中我们可以看出其优先性是和[]相同的,结合性是从左到右的。
结构体的(.)操作符和(->)操作符区别

struct simple{
  int a;
  char b;
  float c;
};
 struct complex{
   struct simple s;
   struct simple sa[10];
 };

于是当如下使用该操作符时:
(comp.s).a 等同于 comp.s.a
((comp.sa)[4]).c 等同于 cmp.sa[4].c

四、总结

访问结构体成员时,我们采用直接访问的方式进行访问,即使用 点操作符 进行访问,
访问结构体指针时,我们采用的是间接访问的方式进行访问,即使用 箭头操作符进行访问。

原文链接:https://www.cnblogs.com/zzao/p/17181392.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:结构体的(.)操作符和(->)操作符区别 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • C++面向对象之类和对象那些你不知道的细节原理详解

    C++面向对象之类和对象那些你不知道的细节原理详解 什么是类 类是C++中定义自己的数据类型的方法。类可看作是一种用户自定义的数据结构。 我们可以通过定义变量来定义一个类的对象,这个对象就包含了类的属性和操作。 类的基本组成 成员变量 成员变量是类的属性,也称为数据成员、字段或属性。 相当于结构体中的成员变量,可以是任何C++数据类型,包括另一个类的对象。 …

    C 2023年5月23日
    00
  • 基于C语言实现的迷宫算法示例

    欢迎来到本站的“基于C语言实现的迷宫算法示例”攻略页面,本文将详细讲解如何使用C语言实现迷宫算法,并提供两个示例帮助您更好地理解该算法的实现过程。 算法简介 迷宫算法是一种基于深度优先搜索的算法,其本质上是在地图中寻找一条从起点到终点的路径。具体来说,该算法通过递归的方式尝试每个格子的四个方向,同时使用递归堆栈回溯到先前的格子。当所有的格子都被尝试后,该算法…

    C 2023年5月23日
    00
  • C语言实现超市信息管理系统课程设计

    C语言实现超市信息管理系统课程设计攻略 1. 确认需求 在进行课程设计前,需要明确超市信息管理系统的需求。可以从以下几个方面进行确定: 系统需要管理哪些信息,如商品信息、供应商信息、员工信息等。 系统需要支持哪些功能,如添加、删除、修改、查询等。 系统需要支持哪些操作界面,如命令行界面、图形界面等。 2. 设计系统架构 在确认需求后,需要进行系统架构的设计。…

    C 2023年5月23日
    00
  • C 程序 检查字母是元音还是辅音

    下面是关于“C 程序 检查字母是元音还是辅音”的完整使用攻略。该程序的主要思路是通过判断用户输入的字符是否为元音字母,来确定其为元音还是辅音。下面我们来逐步介绍该程序的使用步骤。 步骤一:复制代码 首先,在开始之前,需要复制如下的 C 语言代码: #include <stdio.h> #include <ctype.h> int ma…

    C 2023年5月9日
    00
  • GCC 指令详解及动态库、静态库的使用方法

    GCC 指令详解及动态库、静态库的使用方法 GCC 是一个重要的编译器套件,可用于编译包含多种语言的程序。在本文中,我们将深入探讨 GCC 的一些重要指令,并详细介绍动态库和静态库的使用方法,以帮助读者更好地了解和使用 GCC。 GCC 的一些重要指令 编译源代码 GCC 的最常用指令之一就是编译源代码。要编译一个源代码文件,并生成一个可执行文件,可以使用以…

    C 2023年5月23日
    00
  • C++实现比较日期大小的示例代码

    让我来为您深入讲解一下“C++实现比较日期大小的示例代码”的完整攻略。 前置知识 在了解如何使用 C++ 实现比较日期大小之前,我们需要了解以下基础概念:时间戳和结构体。 时间戳是指自 1970 年 1 月 1 日 00:00:00 UTC 至现在的总秒数。在 C++ 中,我们可以使用 time_t 类型来表示时间戳。 结构体是由一系列不同类型的数据组成的自…

    C 2023年5月23日
    00
  • C++实现PyMysql的基本功能实例详解

    C++实现PyMysql的基本功能实例详解 概述 PyMysql是一个Python编程语言下的MySQL数据库API接口,可以用来操作MySQL数据库。而本文将详细讲解如何使用C++语言实现基本的PyMysql功能。 步骤 步骤一:下载安装MySQL Connector/C++ 首先需要在本地安装MySQL Connector/C++,可以从MySQL官方网…

    C 2023年5月22日
    00
  • 激战2国服客户端官方文档具体内容

    激战2国服客户端官方文档 激战2官方文档是激战2国服的官方文档,提供了有关游戏的基础知识、游戏机制、角色职业、地图副本、PVP以及心灵法则等方面的完整介绍。本文将详细讲解激战2国服客户端官方文档的具体内容,以帮助广大玩家更好地了解游戏。 一、游戏机制 激战2国服客户端官方文档的第一部分介绍了游戏的基础知识和游戏机制。其中包括游戏的角色属性、技能系统、战斗机制…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部