[C语言]结构体初识

结构体定义

        结构体是一些值的集合,被成为成员变量,结构的每个成员可以是不同类型的变量

声明:

        定义了一个结构体比如以张蓝图,不占据内存,当你创建了一个结构体变量时,才占空间.

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称
struct student
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别}s1,s2,s3;         //与下面的S变量都是结构体变量,但是s1,s2,s3为全局变量//上方定义了一个自定义的结构体类型main()
{struct student s;      //创建了student 结构体局部变量为 s;}

简便写法:

利用typedef  定义别名,  把 struct student整体 定义别名为stu   ,

定义变量时,利用stu创建结构体变量即可.     此刻stu 为结构体类型

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称, typedef 起别名typedef struct student  
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别}stu;         //上方定义了一个自定义的结构体类型main()
{stu s;      //把struct student 整体 取了一个新名字 stu}

结构体变量可以是标量,变量,指针,数组,其他结构体.

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称struct student  
{//成员变量列表char  name[20];//一个名字int age;       //年龄char sex;      //性别};         struct txt 
{//成员变量列表int a;string str; struct  student s;   //结构体变量成员char   *pc;         //指针变量成员};         main()
{struct txt t={1,"你好",{"李明",12,'男'},arr};   //struct txt t 初始化}

结构体初始化

        1.创建结构体变量时,直接赋初值

main()
{stu s={"李明",20,"男"};      //初始化结  构体变量s}

访问结构体变量

        1.结构体变量.成员变量   (访问嵌套的结构体成员,利用 .嵌套 即可)

      


main()
{struct txt t={1,"你好",{"李明",12,'男'},arr};   //struct txt t 初始化printf("%s",t.str);      //  你好printf("%s",t.s.age);   //  12
}

        2.结构体指针->成员变量

#include<stdio.h>//struct 为结构体关键字,  student 自定义结构体名称, typedef 起别名typedef struct student  
{//成员变量列表char  name[20];   //一个名字int age;           //年龄char sex;          //性别}stu;         //上方定义了一个自定义的结构体类型-----------------------------------------------------------------------------------void print(stu* ps)           //形参为 结构体stu 的指针变量 ps
{printf("%s",ps->name);       //打印结果: 李明
}main()
{stu s={"李明",12,'男'};     print(&s);              //实参 为  &s}

第二种方法比第一种方法好

因为传参数时,参数是需要压栈的,第一个传递整个结构体对象,系统开销较大,传地址则会更小

 

数据结构:

线性结构

  1.         顺序表        (一条顺序的数据)
  2.         链表           (用一条链把数据连续起来)
  3.         栈              (先进后出), 插入一个元素叫"压栈",删除一个元素叫"出栈"
  4.         队列          (先进先出)

树形数据结构

        二叉树,图

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Markdown 图片尺寸对齐等详细使用

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您些帮助请&#x1f449;关…

全链路压测的关键点是什么?

全链路压测是一种重要的性能测试方法&#xff0c;用于评估应用程序或系统在真实生产环境下的性能表现。通过模拟真实用户行为和流量&#xff0c;全链路压测能够全面评估系统在不同负载下的稳定性和性能表现。本文将介绍全链路压测的关键点&#xff0c;以帮助企业更好地理解和应…

【第二十二课】最短路:dijkstra算法 ( acwing849 / acwing850 / c++ 代码)

目录 dijkstra算法求最短距离步骤 朴素的dijkstra算法---acwing-849 代码如下 代码思路 堆优化版的dijkstra算法---acwing-850 代码如下 关于最短路问题分有好几种类型 &#xff1a; 单源就是指&#xff1a;只求从一个顶点到其他各顶点 多源是指&#xff1a;要求每个顶…

SD-WAN和MPLS的区别以及如何选择?

网络连接技术的选择对企业来说至关重要。SD-WAN&#xff08;软件定义广域网&#xff09;和MPLS&#xff08;多协议标签交换&#xff09;是两种备受关注的网络连接方案。它们在架构、带宽、成本和管理等方面存在显著区别&#xff0c;企业应了解清楚这些区别再进行选择。 SD-WAN采…

AI算力专题:从超微电脑创新高看AI算力产业链高景气

今天分享的是AI算力系列深度研究报告&#xff1a;《AI算力专题&#xff1a;从超微电脑创新高看AI算力产业链高景气》。 &#xff08;报告出品方&#xff1a;太平洋证券&#xff09; 报告共计&#xff1a;10页 海外巨头指引 Al 算力产业链高景气 超微电脑业绩指引大幅上调反映…

三子棋游戏小课堂

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今天的主菜是&#xff0c;C语言实现的三子棋小游戏&#xff0c; 所属专栏&#xff1a; C语言知识点 主厨的主页&#xff1a;Chef‘s blog 前言&…

机器学习 | 掌握逻辑回归在实践中的应用

目录 初识逻辑回归 逻辑回归实操 分类评估方法 初识逻辑回归 逻辑回归&#xff08;LogisticRegression&#xff09;是机器学习中的一种分类模型&#xff0c;逻辑回归是一种分类算法&#xff0c;虽然名字中带有回归&#xff0c;但是它与回归之间有一定的联系。由于算法的简单…

【Spark系列2】Spark编程模型RDD

RDD概述 RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets&#xff1a;A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想 RDD实际为Resilient Distribution Datasets的简称&#xff0c;意为弹性分…

【大厂AI课学习笔记】1.3 人工智能产业发展(2)

&#xff08;注&#xff1a;腾讯AI课学习笔记。&#xff09; 1.3.1 需求侧 转型需求&#xff1a;人口红利转化为创新红利。 场景丰富&#xff1a;超大规模且多样的应用场景。主要是我们的场景大&#xff0c;数据资源丰富。 抗疫加速&#xff1a;疫情常态化&#xff0c;催生新…

Windows11通过Hyper-V创建VM,然后通过vscode连接vm进行开发

这边需要在win11上建立vm来部署docker(这边不能用windows版本的docker destop)&#xff0c;学习了下&#xff0c;记录。 下载系统镜像 首先下载系统镜像&#xff1a;https://releases.ubuntu.com/focal/ 这边使用的是ubuntu20.04.6 LTS (Focal Fossa) &#xff0c;Server inst…

1484. 按日期分组销售产品

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 表 Activities&#xff1a; ---------------------- | 列名 | 类型 | --------…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次&#xff0c;每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…

易优CMS采集插件使用教程

本易优CMS采集教程说明如何使用易优CMS采集插件&#xff0c;批量获取互联网上的文章数据&#xff0c;并自动更新到易优cms&#xff08;eyoucms&#xff09;网站&#xff0c;快速丰富网站的内容。 目录 1. 下载并安装易优CMS采集插件 2. 对接网页文章采集工具 3. 采集数据发…

GPT-4级别模型惨遭泄露!引爆AI社区,“欧洲版OpenAI”下场认领

大家好&#xff0c;我是二狗。 这两天&#xff0c;一款性能接近GPT-4的模型惨遭泄露&#xff0c;引发了AI社区的热议。 这背后究竟是怎么回事呢&#xff1f; 起因是1月28日&#xff0c;一位名为“Miqu Dev”的用户在 HuggingFace 上发布了一组文件&#xff0c;这些文件共同组…

Steam爆火游戏幻兽帕鲁自建多人联机专用服务器配置要求

《幻兽帕鲁》这款多人游戏模式的全新开放世界生存制作游戏&#xff0c;在短短上线5天就卖出700万份&#xff0c;同时在线人数最高达到了180万人&#xff0c;创下Steam历史榜单第二名的好成绩&#xff0c;意料之外的爆火也一度导致幻兽帕鲁出现无法创建4人游戏房间、官方服务器连…

C语言-算法-最短路

【模板】Floyd 题目描述 给出一张由 n n n 个点 m m m 条边组成的无向图。 求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径。 输入格式 第一行为两个整数 n , m n,m n,m&#xff0c;分别代表点的个数和边的条数。 接下来 m m m 行&#xff0c;每行三个整数 u …

VUE3:组合式API生命周期

1、onMounted 注册一个回调函数&#xff0c;在组件挂载完成后执行。 组件在以下情况下被视为已挂载&#xff1a; – 1. 其所有同步子组件都已经被挂载。 – 2. 其自身的 DOM 树已经创建完成并插入了父容器中。注意仅当根容器在文档中时&#xff0c;才可以保证组件 DOM 树也在文…

已定式,未定式【高数笔记】

【已定式】 将x-->? 的过程代入到lim中&#xff0c;如果得出的结果可以判断出&#xff0c;lim是有极限的&#xff0c;则为已定式 [举例] lim(1/x)&#xff0c;x--> 无穷 &#xff0c;即&#xff0c;1/ 无穷 0 &#xff0c;所以为已定式 【未定式】 将x-->? 的过程代…

docker 搭建 Seafile 集成 onlyoffice

docker-compose一键部署yaml文件 version: "3"services:db:image: mariadb:10.11container_name: seafile-mysqlenvironment:- MYSQL_ROOT_PASSWORDdb_dev # Requested, set the roots password of MySQL service.- MYSQL_LOG_CONSOLEtruevolumes:- /share/ZFS18_D…

Rust - 变量

不管学什么语言好像都得从变量开始&#xff0c;不过只需要懂得大概就可以了。 但在Rust里不先把变量研究明白后面根本无法进行… 变量绑定 变量赋值❌ 变量绑定✔️ Rust中没有“赋值”一说&#xff0c;而是称为绑定。 int a 3; //C中的变量赋值 a 3; //python中的…