C语言:结构体中(.)和(->)的区别

2023-11-18

首先,要了解

(*a).b 等价于 a->b。

概念上:

一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。

而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了。

二者的相同点:

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

二者的不同点

点操作符左边的操作数是一个“结果为结构”的表达式;
箭头操作符左边的操作数是一个指向结构的指针。

在这里插入图片描述
图中的画圈部分,表示两者意义相同

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

C语言:结构体中(.)和(->)的区别 的相关文章

  • 智能指针与句柄详解(一)

    前言 智能指针与引用计数详解 一 中提到实现智能指针有两种方法 一种是引用计数 另一种就是句柄类实现 什么是句柄类 句柄类是用来存储和管理基类指针 指针所指对象的类型可以变化 它既可以指向基类类型对象又可以指向派生类型对象 用户通过句柄类访
  • 前置++和后置++的区别

    今天在阅读 google c 编程风格 的文档的时候 5 10 前置自增和自减 有一句话引起了我的注意 对于迭代器和其他模板对象使用前缀形式 i 的自增 自减运算符 理由是 前置自增 i 通常要比后置自增 i 效率更高 于是我查了查前置 和
  • typedef struct

    用途一 定义一种类型的别名 而不只是简单的宏替换 可以用作同时声明指针型的多个对象 比如 char pa pb 这多数不符合我们的意图 它只声明了一个指向字符变量的指针 和一个字符变量 以下则可行 typedef char PCHAR PC
  • ##顺序表 编码##

    ifndef LIST H define LIST H class List public List int size List 析构函数 void ClearList 清空线性表 bool ListEmpty 判断线性表是否为空 int
  • ASCII Unicode, UTF8 的关系,string和wstring转换

    目录 1 三大编码由来和转换 2 三大编码在计算机中应用 3 char string 和wchar t wstring 转换 写这篇文章遇到的的问题是c 操作正则的时候 遇到中文出现匹配失败 以及visual studio中中文乱码问题 当
  • C++学习第八篇——字典树

    学习了之前的树状结构 接下来就可以利用树状结构存储数据了 首先什么是字典树 字典树就是利用树的结构按照字典的原理进行存储的数据结构 树的结构我们了解了 字典是什么样的呢 我们通常去查英文单词的时候 往往都是英文字母a b c d x y z
  • C++学习(四三五)android获取so安装路径

    ClassLoader loader getClassLoader try Method library ClassLoader class getDeclaredMethod findLibrary String class String
  • c++下的文件批量读写——查找文件的类 struct _finddata_t结构体用法

    查找文件的类 struct finddata t结构体用法 https blog csdn net yang332233 article details 53081785 但是运行原链接的代码时在while findnext handle
  • vscode使用ssh远程linux可视化开发环境搭建

    目录 1 搭建 vscode 远程开发流程 2 在线搭建环境 3 离线搭建环境 4 ssh免密登录 设置白名单 5 参考文档 最近一直在做服务引擎开发 编译都是在服务器linux环境中进行 每次调试使用gdb修改使用vim贼麻烦 最后找了下
  • STL——vector以及emplace_back分析

    1 这里需要注意凡是连续空间的容器都提供operator 是为了数组操作 2 back 应该是 end 1 3 vector的大小为12 vector的迭代器为指针 1 emplace back 1 相比push back 如果传入临时对象
  • C++学习(四六九)LRU Least Recently Used算法

    LRU是Least Recently Used的缩写 即最近最少使用 最近一段时间最少使用 是一种常用的页面置换算法 选择最近最久未使用的页面予以淘汰 该算法赋予每个页面一个访问字段 用来记录一个页面自上次被访问以来所经历的时间 t 当须淘
  • C++学习笔记——随机数

    利用rand 函数生成随机数如何随机是根据随机数种子来生成 一个程序的随机数种子一般是固定的 所以是伪随机数 若想生成真随机数 则用电脑的时间来初始化这个随机数种子 include
  • C/C++之内存四区

    程序运行时 将内存大致分为四个区域 代码区 存放函数体的二进制代码 由操作系统进行管理的 全局区 存放 全局变量和 静态变量以及 常量 栈区 由编译器自动分配释放 存放函数的参数值 局部变量等 堆区 由程序员分配和释放 若程序员不释放 程序
  • [C++] IO流,文件输入输出,string流,类型转换运算符

    文章目录 类型转换运算符 循环输入原理 文件输入输出 简介 文件模式 二进制读写与文本文件读写 string 流 istringstream 使用 ostringstream 使用 类型转换运算符 循环输入原理 循环输入 有些oj题会要求我
  • 突如其来的C#重新学习(2)

    突如其来的C 重新学习 2 关于Main入口点的问题 Main在C 中不能单独声明 所以必须声明在同一个类中 而且必须声明静态方法 返回可以是void或者int 正常执行应当返回0 对于一个命名空间之内有很多的类的情况下 就可以手动选择从哪
  • C#各种结束进程的方法详细介绍

    转自http www cnblogs com zjoch p 3654940 html Process类的CloseMainWindow Kill Close Process CloseMainWindow是GUI程序的最友好结束方式 从名
  • 无法从命令行或调试器启动服务,必须首先安装Windows服务....。在“安装”阶段发生异常。 System.Security.SecurityException:未找到源

    此处一共两个问题 第一个问题完整描述是 无法从命令行或调试器启动服务 必须首先安装Windows服务 使用installutil exe 然后用ServerExplorer Windows服务器管理工具或NET START命令启动它 第二个
  • vector模拟实现

    个人简介 作者简介 大家好 我是菀枯 支持我 点赞 收藏 留言 格言 不要在低谷沉沦自己 不要在高峰上放弃努力 1 前言 大家在学习C 的时候一定会学到STL 标准模板库 这是C 标准库中最重要的组成部分 它包含了常用的数据结构和算法 今天
  • 对于单向链表的排序与去重

    include bits stdc h using namespace std struct node int num node next class Chain public Chain head tail new node void G
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代

随机推荐

  • 拒绝摆烂!C语言练习打卡第一天

    博客主页 小王又困了 系列专栏 每日一练 人之为学 不日近则日退 感谢大家点赞 收藏 评论 前言 在前面我们学习完C语言的所以知识 当然练习巩固也不能落下 俗话说 无财之谓贫 学而不能行之谓病 可见实践对我们学习的重要 接下来就让小王带着大
  • Istio的架构概述

    Istio的架构概述 Istio的工作机制 首先整个Istio的工作机制和架构主要分为控制面和数据面两个部分 控制面包括Pilot Mixer Citadel等服务组件 数据面则是由应用程序部署的代理程序Envoy组成 大概表述一下全体流程
  • 企业技术/数据架构想法---逻辑图模型

    author skate time 2013 10 12 在做数据库设计时 往往把数据仓库设计和在线交易库分开考虑 但是如果站在企业级别就要统一考虑 这样在设计时就会规避好多问题 在技术 数据架构设计时 可以控制全局的复杂性 可重用性 可扩
  • 记录docker部署mysql后mysql启动失败,报错【Please...the manual to find out how to run mysqld as root】的解决方法

    现象 以docker形式创建mysql容器 启动容器后mysql运行失败 查看日志报错 Please read Security section of the manual to find out how to run mysqld as
  • LocationAwareException: A problem occurred configuring root project

    上星期项目还没事 这周一打开项目就报Read timeOut Caused by org gradle internal exceptions LocationAwareException A problem occurred config
  • 枚举类的value方法

    枚举类的value 方法可以将枚举类转变为一个枚举类型的数组 是由编译器添加的 官网 如图
  • 【Logback】<logger>、<root>标签详解

    文章目录 背景 一
  • linux自学群565589971欢迎加入

    作为一个linux爱好者 从自学一步步走上linux运维的工作岗位 对这个行业深深的热爱 也知道自学的不易 学习过程中也走了不少弯路 我现在在一家网络公司任职运维高级经理 也算积累一定的linux实战经验 所以我打算建一个自学群 跟想要学习
  • 近期遇到的两个SQL盲注与云盾绕过的一个小tips

    文章目录 前言 一 数字型盲注 二 order by注入 前言 最近在测试过程中遇到两个SQL注入 一个是数字型的盲注 一个是order by盲注 云盾绕过 一 数字型盲注 凭借印象 搭了个环境 大概长这样 前面170会拼接到查询语句 后面
  • 从zygote到onCreate应用启动过程分析

    在之前的文章讲了app进程大概的启动过程 https blog csdn net qq 36063677 article details 125638137 这篇文章细致的分析一下app进程从zygote进程fork出来到onCreate等
  • java和电脑编程_计算机初学者学习编程语言C#和Java哪个更有前途?

    如果同时接触到Java和C 这两门语言 确实是会容易让人纠结 毕竟目前这两门语言都是世界使用人数排名前五的语言 要说哪个更有前途 真的很难判定 因此 个人认为是有必要分析一下两门语言的一些特点和应用领域 语法 在语法上 如果是接触过Java
  • Function Score 多个function java写法

    背景 我们在使用 ES 查询的时候 除了 bool 查询 还会经常用到 function score 查询 简单来说 function score 就是对打分结果进行算法重排 鉴于网上基本上都是DSL写法 我找了好久没有找到JAVA应该怎么
  • 新版sonar代码审查问题总结

    主要问题列表 格式 问题名字 问题出现的次数 Resources should be closed2 资源未关闭 打开发现有两处用到的IO流没有关闭 Conditions should not unconditionally evaluat
  • 选择单选‘固定时间’,那么单选灵活时间输入框被禁用

    预计效果 1 disable isSee radio flexible 不能编辑 选择另一个单选的单选框 短路或 一边为真即为真 2 method方法 如果e 固定时间 那么 灵活时间输入框为空 相反 如果e 灵活时间 那么 固定时间输入框
  • 【3D点云】分割算法总结(一)

    文章目录 前言 Related work 一 PointNet 分类 分割2018 1 关键代码 1 点云采样 2 卷积下采样 升维 3 上采样 self fp4 l3 xyz l4 xyz l3 points l4 points 二 MV
  • Android 蓝牙开发基本流程

    http blog csdn net q610098308 article details 45248423 此例子基于 Android demo 对于一般的软件开发人员来说 蓝牙是很少用到的 尤其是Android的蓝牙开发 国内的例子很少
  • Mysql 报错注入方式总结

    floor 注入语句 id 1 and select 1 from select count concat user floor rand 0 2 x from information schema tables group by x a
  • 解密aes加密的m3u8片段的方法

    现在一些m3u8是有aes加密的 解密方法也简单 只要找到m3u8指定的密码文件就行了 一般都在 EXT X KEY METHOD AES 128 URI xxx 这里 下面的代码显示了在下载ts片段和密码文件后如何解密 假设已下载的m3u
  • Qt实战-聊天界面案例

    Qt实战 聊天界面案例 本项目模仿某平台 实现类似的聊天案例 喜欢的朋友可以在此基础上进行添加功能 1 原理 使用udp通信接收本地服务器的消息 ui gt setupUi this 初始化操作 udpSocket new QUdpSock
  • C语言:结构体中(.)和(->)的区别

    首先 要了解 a b 等价于 a gt b 概念上 一般情况下用 只需要声明一个结构体 格式是 结构体类型名 结构体名 然后用结构体名加 加域名就可以引用域 了 因为自动分配了结构体的内存 如同 int a 一样 而用 gt 则要声明一个结