《零基础看得懂的C语言入门教程 》——(十二)原来结构体是这么回事

一、学习目标

  1. 了解C语言的结构体的使用方法
  2. 了解C语言结构体的结构的赋值
  3. 了解多种C语言结构体变量的赋值方法和取值方法

目录

C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言。
第一篇:(一)脱离学习误区
第二篇:(二)C语言没那么难简单开发带你了解流程
第三篇:(三)轻轻松松理解第一个C语言程序
第四篇:(四)语言的基本数据类型及变量
第五篇:(五)C语言的变量、常量及运算
第六篇:(六)轻轻松松了解C语言的逻辑运算
第七篇:(七)C语言的循环分分钟上手
第八篇:(八)了解基本数组还不是那么简单
第九篇:(九)C语言二维数组与循环嵌套
第十篇:(十)C语言的指针原来是这样
第十一篇:(十一)C语言自定义函数真的很简单
第十二篇:(十二)原来结构体是这么回事
第十三篇:(十三)socket服务端编写

C语言新手的100个报错解法

推荐

欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~
在这里插入图片描述

二、了解结构体的使用方法

C语言没有一些其它高级语言中的面向对象概念,如果你是新手的话知道这个专业术语即可,在之后的不断深入学习中早晚会遇见;为什么我把C语言的结构体与面向对象做一个比较?因为他们之间有一定的相似度,这是一个很重要的概念。

2.1 什么是C语言结构体
在学习C语言结构体前我们需要知道C语言结构体是什么东西,形式是如何的,它的核心的组成思想是什么。

结构体简单的来说是一个数据的类型,跟int整型、char字符型类型一样,都是一种数据类型,在此别纠结它具体是什么,毕竟还没深入学,在此只要知道它也是数据类型即可。结构体是一种数据类型但它与int整型、char字符型数据不同之处是需要我们自己编写它的一个数据结构(这个数据结构是单纯意义上的数据组成)。结构体是有多个或其它数量的数据类型组成的一种结构,其它数量的数据类型可以是整形、字符型等。

由上所述我们可以知道,结构体是一个变量,但是这个变量需要我们自己去编写它的数据构成,这些数据构成是一些数据类型的变量。

我们看一下结构体示例:

struct human{int age;char sex;char name;
} ;

结构体使用struct 进行声明,struct 后接的一对花括号,花括号中编写这个结构体所包含的变量有哪些,并且使用分号表示结构体内变量的结束;在struct之后花括号之前为结构体名,结构体名与变量名类似。

以上的结构体所包含的变量有整形变量age,字符变量sex以及字符变量name,名称为human;结构体我们可以看为是一个类别,该类别的组成元素有哪些。

以上结构体名为human中文译为人类,那么一个人有哪些属性呢?首先有年龄是一个整数数据,所以我在结构体中编写一个整数类型的变量age;人类还有性别,我在human结构体中使用sex表示说明并且也定义了一个char类型的变量name用于存储人类的名称代号。从以上所述可以很清楚的知道当前结构体human的一个组成。

注意:花括号末尾需要分号表示结束。
2.2 结构体的使用
在以上内容中重点强调了结构体是一个类型,那么一个类型的变量如何进行声明创建?例如int类型定义一个变量a为 int a;,那么结构体就可以写成 结构体名 变量;,这样写是错的,必须在结构体名前添加一个 struct关键字,表示接下来我所声明的变量为结构体: struct 结构体名 变量;。代码示例为:

#include<stdio.h>void main(){struct human{int age;char sex;char name;} ;struct human xiaoming; 
}

以上示例中定义了一个名为human的结构体,随后根据这个结构体创建了一个xiaoming的结构体变量。
创建完结构体变量后我们需要对这个结构体变量进行赋值,赋值使用点运算符“.”,可以将这个点当作“的”使用。例如我需要为xiaoming增加一个年龄,那么就可以使用xiaoming后接一个点,表示小明的什么元素要赋值多少,可以写成:

xiaoming.age=10;

同样,其它的元素都可以这样去进行赋值,我们称这些元素为成员变量。其它成员变量的赋值:

xiaoming.sex='T';
xiaoming.name='M';

在此我赋值性别为男,用T表示,小明的名字用M表示。
那赋值完毕后如何进行取值呢?取值的方式很简单,也是使用点运算符:

xiaoming.age

我们赋值完毕后输出内容查看一下是否成功:

#include<stdio.h>void main(){struct human{int age;char sex;char name;} ;struct human xiaoming; xiaoming.age=10;xiaoming.sex='T';xiaoming.name='M';printf(" age 为:%d\n",xiaoming.age);printf(" sex 为:%d\n",xiaoming.sex);printf(" name 为:%d\n",xiaoming.name);
}

运行结果如下:
在这里插入图片描述
结构体也可以直接在编写的时候直接创建结构体变量:

struct human{int age;char sex;char name;} xiaoming;

以上代码中直接在结构体末尾花括号之后,结束分号前创建了一个结构体变量,整体代码:

#include<stdio.h>void main(){struct human{int age;char sex;char name;} xiaoming;xiaoming.age=10;xiaoming.sex='T';xiaoming.name='M';printf(" age 为:%d\n",xiaoming.age);printf(" sex 为:%d\n",xiaoming.sex);printf(" name 为:%d\n",xiaoming.name);
}

运行结果均为一致,也可以创建多个结构体变量:

#include<stdio.h>void main(){struct human{int age;char sex;char name;} xiaoming,xiaohong;xiaoming.age=10;xiaoming.sex='T';xiaoming.name='M';xiaohong.age=11;xiaohong.sex='M';xiaohong.name='H';printf("xiaohong age 为:%d\n",xiaoming.age);printf("xiaohong sex 为:%d\n",xiaoming.sex);printf("xiaohong name 为:%d\n",xiaoming.name);
}

运行结果为:
在这里插入图片描述
也可以在直接创建结构体变量的时候赋值:

struct human{int age;char sex;char name;} xiaoming={10,'T','M'},xiaohong;

赋值在变量名后使用一个等于号,值使用一对花括号,花括号内编写不同的值,并且用逗号进行分隔;也可以同时赋值2个结构体变量:

struct human{int age;char sex;char name;} xiaoming={10,'T','M'},xiaohong={1,'M','H'};

整体代码为:

#include<stdio.h>void main(){struct human{int age;char sex;char name;} xiaoming={10,'T','M'},xiaohong={1,'M','H'};printf("xiaoming age 为:%d\n",xiaoming.age);printf("xiaoming sex 为:%d\n",xiaoming.sex);printf("xiaoming name 为:%d\n\n",xiaoming.name);printf("xiaohong age 为:%d\n",xiaohong.age);printf("xiaohong sex 为:%d\n",xiaohong.sex);printf("xiaohong name 为:%d\n",xiaohong.name);
}

运行结果为:
在这里插入图片描述

三、总结

  1. 了解C语言的结构体的的结构是一组不同类型数据的组合
  2. 了解C语言结构体的结构的赋值是使用点运算符对内的成员变量进行赋值
  3. 了解了多种结构体变量的赋值方法和取值方法,赋值可以在新建时赋值也可以在之后赋值,取值使用点运算符进行取值

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

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

相关文章

mysql关系数据库引擎_MySQL数据库引擎详解

作为Java程序员&#xff0c;MySQL数据库大家平时应该都没少使用吧&#xff0c;对MySQL数据库的引擎应该也有所了解&#xff0c;这篇文章就让我详细的说说MySQL数据库的Innodb和MyIASM两种引擎以及其索引结构。也来巩固一下自己对这块知识的掌握。Innodb引擎Innodb引擎提供了对数…

Java之synchronized的JVM底层实现原理精简理解

1 synchronized的JVM底层原理实现的精简理解 Java 虚拟机中的synchronized基于进入和退出Monitor对象&#xff08;也称为管程或监视器锁&#xff09;实现&#xff0c; 无论是显式同步(synchronized作用在同步代码块&#xff0c;有明确的 monitorenter 和 monitorexit 指令) 还是…

三分钟掌握Actor和CSP模型

点击上方蓝字进行关注前文传送门&#xff1a;《三分钟掌握共享内存模型和 Actor模型》&#xff0c; 一直想比较Actor模型与golang的CSP模型&#xff0c;经过一段时间的实战记录了本文。Actor vs CSP模型• 传统多线程的的共享内存&#xff08;ShareMemory&#xff09;模型使用l…

DateTimeToUnix/UnixToDateTime 对接时间转换

问题&#xff0c;通过毫秒数来解析出时间&#xff1a;&#xff08;很多对接的时候经常需要用到&#xff09; <?php $MyJson {"jingdong_vas_subscribe_get_responce":{"code":"0","item_code":"FW_GOODS-2236-1","…

【学生选课系统经典】VB与SQLSERVER连接:Windows应用工程案例

实验任务描述 1 用VB6访问SQLSERVER数据库(两种安全模式); 2 用VB6完成数据库指定表上的数据显示; 3 用VB6完成数据库指定表上的数据插入、删除和更新; 4 用VB6完成SQLSERVER2008数据库用户验证。 一、数据库系统 该实验中,所要求的数据库名称为SCHOOL,总共涉及以下表:

《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用

学习目标 了解什么是开发环境了解python语言的环境安装了解python语言编程的编辑器工具 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第三篇&#xff1a;《假如编…

mysql5.7 only_full_group_by_Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

近期在开发过程中&#xff0c;因为项目开发环境连接的mysql数据库是阿里云的数据库&#xff0c;而阿里云的数据库版本是5.6的。而测试环境的mysql是自己安装的5.7。因此在开发过程中有小伙伴不注意写了有关group by的sql语句。在开发环境中运行是正常的&#xff0c;而到了测试环…

一款高速的NET版的离线免费OCR

PaddleOCR.Onnx一款基于Paddle的OCR&#xff0c;项目使用ONNX模型&#xff0c;速度更快。本项目同时支持X64和X86的CPU上使用。本项目是一个基于PaddleOCR的C代码修改并封装的.NET的工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能&#xff0c;同…

spring 注解简单使用

一、通用注解 1、项目结构&#xff1a; 2、新建Person类&#xff0c;注解Component未指明id&#xff0c;则后期使用spring获取实例对象时使用默认id"person"方式获取或使用类方式获取 package hjp.spring.annotation.commen;import org.springframework.stereotype.C…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧

学习目标 完成显示魔法的使用——输出print完成传入魔法的使用——输入input使魔法生效——运行python文件 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第二篇&am…

查缺补漏系统学习 EF Core 6 (一)

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事掌握 ORM 开发方式是每一个 .NET 开发者所必备的技能&#xff0c;而且 .NET 平台有很多优秀的 ORM 框架。很多人都会诟病 .NET 官方标配的 Entity Framework&#xff0c;感觉其笨重难用、性能低下。但其实经过多年发展&am…

【经典回放】JavaScript学习详细干货笔记之(一)

【经典回放】JavaScript学习详细干货笔记之&#xff08;一&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;二&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;三&#xff09; 目录 一、为什么要学JavaScript 二、JavaScript经典案例 …

TCP之三次握手和四次挥手过程

1 TCP包头里面的标志位 下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。 标志位这里会涉及3个,ACK SYN FIN ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 2 三次握手过程 第一次握手 Client将标志位SYN置1,随机产生一个值seq=J,并将数…

gearman mysql编译_gearman初探(一、编译和安装)

gearman是一个任务分发系统&#xff0c;将计算比较耗时的任务分发给不同的机器专门进行计算&#xff0c;而任务发起的初始程序不必等待这些任务完成就可以返回而继 续执行。笔者最开始做PHP邮件发送的时候&#xff0c;因为邮件发送耗时比较长&#xff0c;这时PHP脚本就会被阻塞…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

学习目标 了解魔法世界中可更改容器——变量了解魔法世界的基本数值类型——字符串、整数了解魔法百宝箱——字典、列表了解列表如何添加值了解字典如何添加值了解字典与列表定义的不同符号 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&…

TCP协议之如何保证传输的可靠性

一、问题 TCP协议之如何保证传输的可靠性?我们先看下TCP的头部图片和TCP头部的字段 /*TCP头定义,共20个字节*/ typedef struct _TCP_HEADER {short m_sSourPort;       // 源端口号16bitshort m_sDestPort;       // 目的端口号16bitunsigned int …

【工具篇】在Mac上开发.Net Core需要的工具

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常开发技巧,如需帮助&#xff0c;请后台留言&#xff1b;[如果觉得本公众号对您有帮助&#xff0c;欢迎关注]在Mac上开发.Net Core需要的工具如果您是一个.NET 开发者&#xff0c;想从Windows切换到Mac上开发.NET或者您已…

【Pix4d精品教程】Pix4Dmapper完整航测内业操作流程手把手图文教程

1. 作业流程图 2. 原始资料准备 原始资料包括影像数据、POS数据以及控制点数据。 确认原始数据的完整性,检查获取的影像中有没有质量不合格的相片。同时查看POS数据文件,主要检查航带变化处的相片号,防止POS数据中的相片号与影像数据相片号不对应,出现不对应情况应手动调…

mysql semi join_MySQL 5.6 Semi join优化之materialization strategy

8月 24, 2014 |Nix.Huang考虑如下查询&#xff1a;select * from Countrywhere Country.code IN (select City.Countryfrom Citywhere City.Population > 7*1000*1000)and Country.continentEurope这个子查询是非相关子查询&#xff0c;我们能和外层循环独立的执行它&#x…

【ArcGIS风暴】何为动态投影?这次全面为您揭开ArcGIS中动态投影的神秘面纱!

本课程配套蓝光视频: 【ArcGIS风暴】GIS动态投影问题 GISer们都见过以下警告,该警告的原因是当前加载的数据的坐标系和当前数据框坐标系不一致导致的,核心问题是地理坐标系不一致。如当前数据的坐标系是GCS_Xian_1980,而数据框的坐标系有可能是WGS_1984等,总之跟要加载的数…