C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别

2023-05-16

一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《C语言核心技术》,明白了其中的奥妙。

 

相同点:两个都是二元操作符,其右操作符是成员的名称。

 

不同点:点操作符左边的操作数是一个“结果为结构”的表达式;

                箭头操作符左边的操作数是一个指向结构的指针。

 

举例说明:

#include <string.h>

 

Song_t  song1,song2,                        //两个Song_t类型的对象

                *pSong = &song1;              //和一个指向Song_t的指针

 

strcpy(song1.composer,"Ottma Liebert");

song1.duration = 251;

song1.published.year = 1998;

if((*pSong).duration >180)

     printf("The song is more than 3 mimutes long.\n");

 

--最后一句也可以改写为:

if(pSong->duration > 180) ....

 

 

另外一点体会:如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

int  iSetValue(Song_t *pSong)

{

  strcpy( pSong ->composer,"123");

  pSong->duration = 251;

 ...

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别 的相关文章

  • 在VMware的Ubuntu18.04搭建vsftp(上传文件)和apache2(http服务)

    在VMware的Ubuntu18 04下 xff1a 搭建vsftp xff08 本机win上传文件 xff09 xff1a 第一步安装vsftp xff1a 直接安装可能会报错Ubuntu 34 E Unable to locate pa
  • 安装ROS时, rosdep update出错解决办法

    网上查了一下 原因基本指向一个 网速问题 按如下步骤进行操作 步骤1 将电脑连接到手机热点 寄希望可以提高网速 依然出错 出错内容大致如下 reading in sources list data from etc ros rosdep s
  • get请求的参数包含中括号[]时,报错400

    1 问题描述 在正式环境中 xff0c 上传文件 2003年鉴 docx 时 xff0c 报错400 但是 xff0c 只有此文件上传时会报错 xff0c 其他文件是正常的 xff08 后文为了方便描述 xff0c 将问题文件称为a xff
  • GPS模块实验

    一 GPS简介 全球定位系统 Global Positioning System GPS 是一种以空中卫星为基础的高精度无线电导航的定位系统 它在全球任何地方以及近 空间都能够提供准确的地理位置 车行速度及精确的时间信息 GPS主要由三大组
  • Python异常捕捉try except else finally有return时执行顺序探究

    在没有return的情况下 try 尝试执行的代码 except 错误类型1 xff1a 针对错误类型1 xff0c 对应的代码处理 except 错误类型2 针对错误类型2 xff0c 对应的代码处理 except 错误类型3 xff0c
  • Linux curl命令最全详解

    目录 一 最常用的curl命令 1 发送GET请求 2 发送POST请求 3 发送json格式请求 xff1a 二 curl命令语法与curl命令参数详解 1 curl命令语法 2 curl命令参数详解 三 Linux curl命令退出码
  • ubuntu16.04安装NS2出现问题及解决办法

    NS2安装与使用 下载NS2软件包到工作目录 地址http nchc dl sourceforge net sourceforge nsnam ns allinone 2 33 tar gz 解压tar zxf ns allinone 2
  • 阿里评测—空闲时间/公益机会/公益积分

    公益机会需要从开始到结束全程参与才能获得积分 span class token keyword import span java span class token punctuation span io span class token p
  • 求二叉树的结点个数

    求二叉树的结点个数 xff0c 如果根节点为空 xff0c 则返回 0 include lt iostream gt include lt malloc h gt using namespace std static int D 61 0
  • 记录android studio 遇到的错误和解决办法

    1 关于android studio 出现Error Execution failed for task app preDebugAndroidTestBuild 39 的解决办法 https blog csdn net fighting
  • 与WebRTC实时通信

    与WebRTC实时通信 一 介绍 WebRTC是一个开源项目 xff0c 可以在Web和本机应用程序中实现音频 xff0c 视频和数据的实时通信 WebRTC有几个JavaScript API xff1a getUserMedia xff1
  • webRTC Android与Web 视频通信

    对于视频聊天 xff0c 首先需要访问用户的音频和视频 在web上 xff0c 有getUserMedia API 调用此API xff0c 它会为您提供MediaStream对象 xff0c 用于来自摄像头和麦克风的音频和视频 下面是代码
  • Android studio安装的痛苦历程

    安装需要IDE和SDK xff0c 安装位置一致 xff0c 我是D Android AndroidStudio 目录下as和sdk 我在第一次装AndroidStudio 创建第一个项目时 在没有创建成功的时候就取消了 然后再次导入别人的
  • CentOS7 无法上网问题分析

    主机现象 xff0c IP及Mac地址都配置完后 xff0c 却ping不通baidu com xff0c 只能ping通局域网 xff0c 一直出现 xff1a ping unknown host baidu com 查看DNS服务器 网
  • 再见!Postman

    点击上方 码农突围 xff0c 马上关注 这里是码农充电第一站 xff0c 回复 666 xff0c 获取一份专属大礼包 真爱 xff0c 请设置 星标 或点个 在看 作者 xff1a 陈凯玲 原文链接 xff1a http www kai
  • 常用c库及其简单介绍

    C标准库 lt assert h gt 可用于验证程序做出的假设 xff0c 并在假设为假时输出诊断消息 lt ctype h gt 可用于测试和映射字符 如数字 xff0c 十六进制数字 xff0c 小写字母 xff0c 大写字母 xff
  • ROS 学习篇(六)发布imu和gps消息

    一 创建工作空间 mkdir p imu gps src span class hljs comment 创建工作空间 span catkin make span class hljs comment 编译 span span class
  • ubuntu下Terminator终端的使用及配置

    Terminator终端最大的优点 xff1a 可以在同一个窗口中启动多个终端 安装 xff1a sudo add span class hljs attribute apt span span class hljs attribute r
  • ROS学习篇(七)rostopic消息记录、回放、转.txt

    一 通过bag文件记录话题消息 当发布话题的节点运行后 xff0c 可以通过rostopic list 列出当前运行的话题 xff0c 然后记录 xff1a mkdir bagfile cd bagfile rosbag record a
  • ROS 学习篇(八)机器人的导航功能--navigation

    ROS 学习篇 xff08 八 xff09 机器人的导航功能 xff0d xff0d navigation 1 概述 ROS的二维导航功能包 xff0c 简单来说 xff0c 就是根据输入的里程计等传感器的信息流和机器人的全局位置 xff0

随机推荐