C语言之结构体讲解

目录
结构体类型的声明
结构体初始化
结构体成员访问
结构体传参
对于上期指针初阶(2)我们后期还会讲数组指针是什么?大家可以先思考一下,后期我们会讲
1.结构体的声明
结构是一些值的集合,这些值被称为成员变量,结构的每个成员可以是不同类型的变量
数组是一组相同元素的集合
结构体其实是一组不一定相同类型元素的集合
在我们生活中
人:名字+性别+年龄+身高+身份证号码+地址.......
书:书名+作责+出版社+定价+书号......
复杂对象,不能通过内置类型直接描述和表示,就有结构体来描述复杂类型

看下图,我们应该怎么理解结构体呢??? 

左半边是结构体类型,右半边是结构体变量
结构体就相当于是相当于盖房子的图纸,拿着图纸照着图纸盖好一个房子,这个盖好的房子就能装东西了,图纸上是不能装东西的,右边的变量就向内存申请空间,有了类型我们就可以初始化了,根据结构体类型来初始化

这里的s2,s3,s4就是结构体变量,并且是全局变量,看下图

这里的typedef的意思是类型重命名,对struct Stu重命名为Stu,那也就是struct Stu s1 == Stu s1,在C语言中,没有对结构体类型typedef,struct关键字不能省略,希望大家能够多加注意

看代码

结构体里面可以包含另一个结构体变量,这里就强调这一个重点 结构体创建的方法,s1是全局变量,struct Stu s2也是一个全局变量(这个可能较难理解),也可以在,main函数里面创建局部变量s3

一个指针是8个16进制位,1个16进制位4个2进制位,也就是32个二进制位

对于struct B这个结构体类型则需按照以下的写法,然后.结构体成员访问操作符将你想要的数据一个一个打印出来

%.2lf是小数点后面保留两位的意思字符数组传值传的是数组首元素的地址,所以需用指针,但是为什么只打印了一个0呢

函数传参想改变值就需要传地址,利用指针改变值的大小,我蛮来看效果,看下面代码以及运行结果

但是这个代码稍显麻烦,这是有一个---->操作符,这样看起来更爽朗,更更加清晰,—>在操作符详解那一章已经给大家提及过了

本章终!

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二类曲线积分

文章目录 第二类曲线积分一、向量场是什么?二、向量场可视化三、计算1. 计算方式一2. 计算方式二 第二类曲线积分 因为之前学习第二类曲线的时候,不是很理解;所以最近看了mit的多元微积分课程,做一些课程笔记。 一、向量场是什么…

字符集和java的编码与解码

一、ASCII和GBK字符集 计算机存储一个英文字符需要一个字节。 ASCII字符集,包括128(0000000B~1111111B)个数据,存储英文字母和字符,对于欧美国家够用。 例如,存储字符’a’,查询ASCII得到为97&a…

C语言中的基本数据类型

C语言中的基本数据类型分别为以下几种 整型、浮点型、字符类型 整型又分为整型int、短整型short、长整型long 浮点型分为单精度浮点型float、双精度浮点型double 1、短整型short 2.整型 3.长整型 短整型、长整型、整形都是表示整形的,并且输出结果也都为10&…

【大数据之Hive】十一、Hive-HQL查询之基本查询

基础语法 select [all | distinct] select_expr,select_expr, ...from table)name --从什么表查[where where_condition] --过滤[group by col_list] --分组查询[having col_list] --分组后过滤[order by col_list] --排序[cluster by col_list | …

leetcode 152.乘积最大子数组

题目描述 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 来源:力扣&a…

C++入门攻略

C补足C语言部分缺陷 1.命名空间:1.1 命名空间namespace关键字1.命名空间中可以定义变量、函数、类型2.命名空间可以嵌套3.相同命名空间共存 1.2 命名空间的使用方式:1.名称加用域作用限定符的方式访问(同上)2.使用using引入某个空…

Java并发之 Lock 锁

一、Lock接口 1 Lock简介&地位&作用 锁是一种工具,用于控制对共享资源的访问Lock和synchronized是最常见的两个锁,他们都能够达到线程安全的目录,但是使用和功能上又有较大的不同Lock接口最常见的实现类就是ReentrantLock通常情况下…

C:\Users\BC>conda -V ‘conda‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

C:\Users\BC>conda -V ‘conda’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 注意!:Anaconda安装路径和Scripts路径,两个都添加进去Path 解释:将 Anaconda 安装路径和 Scripts 路径都添加到系统的 PA…

文心一言 VS 讯飞星火 VS chatgpt (40)-- 算法导论5.4 4题

四、一次聚会需要邀请多少人,才能让其中 3 人的生日很可能相同? 文心一言: 为了解决这个问题,我们需要先计算出所有可能的生日组合数,然后计算出其中生日相同的组合数。 已知需要邀请的人数为:23人 根据组合数公式…

k8s如何使用ceph rbd块存储(静态供给、存储类动态供给)

目录 前言安装ceph集群ceph集群创建rbd块存储rbd块存储不支持ReadWriteManyk8s配置rbd块存储(静态供给)创建secret创建pv创建pvck8s节点安装客户端依赖包部署pod查看pod验证是否持久化 k8s配置rbd块存储(动态供给)查看官网ceph集群…

【ARM AMBA AXI 入门 6 - AXI3 协议中的锁定访问之AxLOCK信号】

文章目录 1.1 Locked accesses 1.1 Locked accesses 当主机使用 AxLOCK 信号来指示事务是锁定的事务时,互连(Interconnect)必须确保只有该主机可以访问目标从属区域,直到来自同一主机的未锁定事务完成。互连中的仲裁器(arbiter)必须执行此限制。 在主机…

湖南大学CS-2017(另一张)期末考试解析

【特别注意】 答案来源于wolf 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 有必要一做。 【试卷与答案】 由于这张试卷没有电子版,我就直接拍我自己的作答了

Monocle2拟时基因富集分析

****Monocle2全部往期精彩系列:1、群成员专享:Monocle2更新(就是重新梳理一下)2、一键跑完monocle2?3、ggplot2个性可视化monocle2结果4、ggplot修饰monocle2拟时热图:一众问题全部解决5、Monocle2终极修改…

Day975.如何使用JWT结构化令牌 -OAuth 2.0

如何使用JWT结构化令牌 Hi,我是阿昌,今天学习记录的是关于如何使用JWT结构化令牌的内容。 OAuth 2.0 规范并没有约束访问令牌内容的生成规则,只要符合唯一性、不连续性、不可猜性就够了。这就意味着,可以灵活选择令牌的形式&…

天然气井远程监控解决方案

天然气井远程监控解决方案 一、项目背景 随着天然气开发规模日益增长,天然气井的数量也在不断增加。且位置分散环境恶劣。传统的人工巡检方式越来越不能满足天然气井的生产需求和安全保障。天然气井井由储罐和集气站组成。 集气站通过计量站将天然气输入储罐或由集…

深入学习 Mybatis 的四大组件源码

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

社会心理学(1) 社会心理学的定义

今天开始 我们一起学习一门课程 社会心理学 社会心理学 他是 应用心理学 或者 心理学专业的一个必修课 吴江霖教授说过 心理学应该分为两大分支 生理心理学 和 社会心理学 如果认同他的观点 那么 社会心理学可谓是相当重要了 社会心理学的定义之广可以说 有多少社会心理学教…

【MySQL数据库一】MySQL数据库初体验

MySQL数据库初体验 1.数据库基本概念1.1 数据Data1.2 表1.3 数据库1.4 数据库管理系统1.5 数据库系统 2.数据库的发展3.主流的数据库介绍3.1 SQL Server(微软公司产品)3.2 Oracle (甲骨文公司产品)3.3 DB2(IBM公司产品…

【Spark基础编程】 第8章 Spark MLlib

系列文章目录 文章目录 系列文章目录前言【 第8章 Spark MLlib 】8.1 Spark MLlib简介8.1.1 什么是机器学习8.1.2 基于大数据的机器学习8.1.3 Spark 机器学习库MLLib 8.2 机器学习工作流8.2.1 机器学习流水线概念8.2.2 构建一个机器学习流水线 8.3 特征抽取、转化和选择8.4 分类…

【Linux】进程间的通信之共享内存

进程间的通信之共享内存 一、system V 内存共享原理二、共享内存的使用1、ftok函数2、shmget函数3、shmat函数4、shmdt函数5、shmctl函数6、代码使用 三、一些细节的补充 一、system V 内存共享原理 利用内存共享进行进程间的通信的原理其实分为以下几个步骤: 在物…