【数据类型】C语言,结构体的基本认识

浅析结构体 浅析结构体,将自己的学习心得分享给大家,希望在今后的学习中,大家一起进步。 阅读详情
  • 通过本文,你将学到:
  1. 什么是结构体,结构体的基本特征;
  2. 定义一个结构体;
  3. 申明和使用结构体变量

 

什么是结构体

struct 结构体名字(可有可无)
{
    数据类型
    ……
};
  • 形如上面一样:含有“struct”关键字,含有一对“{ }”,至少含有一个数据类型,和含有一个“;” —— 由这样组成格式,就被称作结构体!
  • 结构体也是一种数据类型,只不过它不同于形如int、char、float等这种基本的数据类型,不同之处在于它可以:
  1. 整合多个同类型的,为一种新类型(当然,这种新类型也是一种数据类型,是你创造的);
  2. 整合多种不同类型的,为一种新的类型;
  3. 总而言之,你可以利用已经存在的数据类型创造新的数据类型!
  • 学习结构体,就像是在学习int一样;只是结构体的定义内容要多一点而已;

结构体的特征

//一个完美的结构体
struct 结构体名
{
    成员1;
    成员2;
    ……
}变量名1,变量名2,……;
  1. 在结构体名与成员列表与变量名列表的三个类别中,至少要出现两个才能是正确的结构体;
  2. 像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。
  3. C语言要求结构体至少得有一个成员,也就是说C语言并不允许空结构体的出现!

 

结构体的两种类型

  1. 标准结构体:
    struct 结构体名 { 
        数据类型…… 
    }结构体变量名;
  2. 匿名结构体:(即没有结构体名)
    struct { 
        数据类型…… 
    }结构体变量名;

定义结构体(变量)

1、先定义结构体类型,再定义变量

struct stu { //定义一个结构体,这种数据类型是 “struct stu”;
    char *name; //姓名
    int num; //学号
    int age; //年龄
    char group; //所在学习小组
    float score; //成绩
};
  • 既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2; //stu1、stu2就是结构体变量;
  • 定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字struct不能少。
  • stu 就像一个“模具”,定义出来的变量都具有相同的性质。

2、定义结构体的同时就定义变量

struct{  //没有写 stu,后面就没法用该结构体定义新的变量。
    char *name; //姓名,结构体成员变量
    int num; //学号
    int age; //年龄
    char group; //所在学习小组
    float score; //成绩
} stu1, stu2; //在定义时就初始化两个结构体变量;

3、直接定义结构体类型变量,省略类型名

struct {
	char *name;
	int age;
} stu;

 

结构体变量

把结构体变量想象成int型变量或者是其他基础类型的变量即可。

struct 结构体名 结构体变量名;  ===>>>   int int型变量名;

结构体变量的引用四种方式:

1) 结构体变量名.成员名:stu1.name

2) 结构体指针变量成员名:ps->name

3) (*结构体指针变量).成员名:(*ps).name 因为优先级的问题,所以要加括号

4) 结构体变量数组名.成员名:stu[0].name

//示例
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct MyStruct
{
	char* name;
	int age;
};
int main()
{
	struct MyStruct person_a; //结构体变量,类比于:int a;
	person_a.name = "aaa";
	person_a.age = 10;
	printf("%s,%d\n", person_a.name, person_a.age);

	struct MyStruct* person_b = NULL; //结构体指针,类比于:int *a;
	person_b = (struct MyStruct*)malloc(sizeof(struct MyStruct) * 1);
	person_b->name = "bbb";
	person_b->age = 20;
	printf("%s,%d\n", person_b->name, person_b->age);
	printf("%s,%d\n", (*person_b).name, (*person_b).age);

	struct MyStruct persons[5]; //结构体数组,类比于:int a[5];
	int i;
	for (i = 0; i < 5; i++)
	{
		persons[i].name = "x";
		persons[i].age = 0;
	}
	printf("%s,%d\n", persons[0].name, persons[0].age);

	return 0;
}

 

 

【C语言】数据类型 C语言数据类型 阅读详情

相关推荐

C语言系列1——详解C语言:变量、常量与数据类型

在学习C语言的过程中,理解变量与常量的概念是基础,也是必经之路。这不仅涉及到如何存储数据,还包括如何有效地在程序中使用这些数据。此外,C语言提供了一系列的基本数据类型,为不同的数据存储需求和操作提供支持。本文将深入探讨变量与常量的定义、C语言中的基本数据类型,以及如何正确声明和使用变量。

theskylife的博客 5798

C语言stu类型的变量,C语言-结构体

C语言中数组是把相同类型的数据类型的变量集中在一起了,而结构体则是把不同类型的变量聚集在一起。结构体也是一种数据类型,但是它是一种自定义的数据类型,也就是说和使用其他数据类型不一样,我们得先定义这种数据类型,然后才能用这种数据类型定义结构体变量,最后使用结构体变量。以下以学生结构体为例进行实际操作一、定义结构体数据类型,有三种方法,1、第一种是先定义结构体类型,再使用此类型定义变量:1 struc...

weixin_39955781的博客 3167

C语言的数据类型

指针的定义需要在数据类型后加符号。指针可以赋值、解引用等。C语言的数据类型是构建程序的基础,理解和正确使用这些数据类型是进行有效编程的重要前提。通过本文的介绍,您应该对C语言中的基本数据类型、构造数据类型、指针以及类型转换有了较为全面的认识。在实际编程中,合理选择和组合这些数据类型,可以提高程序的性能和可读性。希望本文能够为您的C语言学习之旅提供帮助和启发。

2401_90086018的博客 1375

结构体类型

C语言中用户可自定义的数据类型框架结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型。 它的特点和数组主要有两点不同: 首先结构体可以在一个结构中声明不同的数据类型。 第二,相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称

离开实践的理论是空洞的理论,没有理论指导的实践是盲目的实践 543

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 216

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 369

怎样理解c语言中的结构体,C语言结构体的一些理解

前言最忙碌的一周已然结束,疲惫之余想和大家聊一聊对C语言中结构体的认识。水平不足,如有问题请大家指正。一、对结构体的理解我们知道C语言中有基本数据类型:1、整(数)型:int:基本整型,用于存储整数,占4个字节,默认值为0short:短整型,占2个字节long:长整型,占4个字节long long:双长整型,占8个字节,比较少用2、浮点型float:单精度浮点型,占4个字节double:双精度浮点...

weixin_34026053的博客 2186

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1800

C语言形如typedef struct stu{}的结构体如何理解typedef?

背景: typedef 加在结构体前面加和不加有什么区别? 实例1: 这里我们使用最普通的结构体,生成了一个结构体变量stu1 #include<stdio.h> //实例1 struct stu { char *name; int num; int age; char group; float score; }; int main() { //实例1 struct stu stu1; stu1.name = "elephant"; stu1.num = 12;

程序员象漂亮的博客 2792

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 632

Ghost卷积原理与构建YOLOv11的GhostNet变体

本文探讨了在边缘设备部署YOLOv11时使用Ghost卷积进行模型轻量化的实践经验。针对Jetson Nano的4GB内存限制,作者通过替换Backbone中的3x3标准卷积为Ghost卷积,实现了参数减少28%、推理速度提升38%,仅损失1.1%mAP的优化效果。文章详细介绍了Ghost卷积的实现原理、在YOLOv11中的具体替换策略,以及训练调参和部署优化的关键技巧。作者强调轻量化是计算效率与模型性能的权衡,建议工程团队保留原模型和Ghost变体两个版本,根据实际需求灵活切换。Ghost卷积的核心价值在

as1225120794的博客 169

【STM32基础】C语言基本数据类型、宏定义、typedef、结构体、枚举

摘要:本文介绍了C语言在STM32开发中的数据类型使用要点。主要涵盖基本数据类型(包括整数型、字符型、浮点型)的存储空间和取值范围;宏定义(#define)和typedef的用法区别;枚举类型(enum)的定义和遍历方法;以及结构体(struct)的定义、初始化和嵌套使用。重点说明了在嵌入式开发中合理选择数据类型对内存管理和代码可维护性的重要性,并提供了各类数据类型在STM32中的实际应用示例。这些基础知识对STM32等内存受限的嵌入式系统开发具有重要指导意义。

m0_57873968的博客 1387

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1570

42 C 语言 typedef:为基本数据类型、数组、指针、结构体、共用体起别名

本文全面介绍了 C 语言中 typedef 的使用方法和技巧。从为基本类型如 int、unsigned char 起别名,到为结构体、共用体、指针以及数组等复杂类型起别名,都进行了详细的阐述。通过具体示例,展示了如何分开定义结构体和别名、如何在结构体定义中直接使用 typedef、如何为匿名结构体起别名等高级用法。此外,还探讨了为指针和数组类型起别名的方法,并给出了综合案例,帮助读者更好地理解和应用 typedef。

大模型全栈工程师 · Thanks_ks 1707

拉曼光谱入门:5.表面增强与共振增强

拉曼散射效应因其弱信号特性限制了传统拉曼光谱术的检测灵敏度。为克服这一局限,表面增强拉曼光谱术(SERS)和共振增强拉曼光谱术(RRS)被开发出来,显著提升了信号强度。SERS通过金属表面的电磁和化学效应放大信号,而RRS则通过匹配激发光波长与分子电子跃迁波长来增强信号。这两种技术扩大了拉曼光谱的应用范围,尤其在低浓度和微量试样分析中表现出色,尽管在实验操作和试样损伤方面存在挑战。

qq_53529450的博客 1446

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【精华文】C语言结构体特殊情况分析:结构体指针 / 基本数据类型指针,指向其他结构体

参考链接:Structure pointer pointing to different structure instance 注:可以查看此篇的问题和唯一的回复,那是相对正确的,不要看comment,有很多错误。 我是拒绝分析这种问题的,因为似乎没有人会这么乱用,但是……在华保健老师的编译原理示例代码和Linux0.11内核中,就遇到了这么神奇的代码,那就不得不研究一下了!毕竟是大神写的代码,我不知道应该是我渣。 1 测试代码 #include <stdio.h> #include &lt.

X 1049

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c语言八大数据基本类型,C语言中基本的数据类型有哪些

C语言中基本的数据类型有哪些发布时间:2020-11-26 15:10:13来源:亿速云阅读:76作者:Leah本篇文章给大家分享的是有关C语言中基本的数据类型有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、对结构体的理解我们知道C语言中有基本数据类型:1、整(数)型:int:基本整型,用于存储整数,占4个字节,默认值为0sh...

weixin_26870929的博客 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言——结构体指南(小白一看就懂!!!)

本文详细介绍了C语言中结构体的概念、语法和使用方法。结构体是一种自定义的复合数据类型,可以将不同类型的数据组合在一起。文章讲解了结构体的基本特点、声明方式、成员访问方法以及内存对齐规则。通过示例说明了结构体内存布局的计算方式,并解释了内存对齐的原因和优化建议。

专注 C++ 后端开发与 Linux 系统编程,深耕 STL 原理、多线程、内存管理、网络编程与服务端开发。用通俗语言拆解晦涩知识点,持续输出高质量学习笔记、踩坑复盘与面试干货。 2037

【c 语言】结构体的概念

本文将深入探讨C语言中结构体的概念,阐述其在编程中的重要作用与意义,并对比结构体与其他数据类型的区别,以期帮助读者更好地理解和应用结构体

m0_74195174的博客 1493

探索C语言数据类型

在C语言的世界里,数据类型就像是建筑中的基石,它们决定了我们如何存储和操作数据。了解C语言的数据类型是深入学习这门强大编程语言的关键一步。C语言的数据类型丰富多样,它们为我们在编写程序时提供了灵活的方式来处理各种数据。掌握好数据类型的使用,是写出高效、准确C程序的基础。

qq_74215677的博客 1335

【C语言基础】-数据类型大小

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、基本数据类型整型字符型浮点型枚举类型二、构造数据类型三、指针类型四、空类型1.引入库2.读入数据 前言 c语言的数据类型如下图所示: 一、基本数据类型 基本数据类型最主要的特点是其值不可以再分解为其它类型。也就是说,基本数据类型是自我的说明。 整型 短整型:short int (2字节) (-32768~32767) 整型: int (2字节) (-32768~32767) 长整型:long int .

weixin_44247448的博客 6551

c语言结构体嵌套

转载自:https://blog.youkuaiyun.com/zhudong10/article/details/49496221 C语言中结构体是一种构造类型,和数组、基本数据类型一样,可以定义指向该种类型的指针。结构体指针的定义类似其他基本数据类型的定义,格式如下 struct 结构体名 * 指针名; 比如: struct person{char[20] name; int age;};//先定...

suitongou4790的博客 1万+

C语言结构体

结构体结构体概括数据类型概括 结构体概括 在C语言中,可以使用结构体来存放一组不同类型的数据 结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同 举一个栗子!!! struct student{ char *name; int num; int age; float score; }; student 为结构体名,它包含了四个成员(name,

weixin_51927215的博客 296

C语言数据类型系统

基本数据类型:包括整数、浮点、字符和布尔类型,是C语言的基础。派生数据类型:包括数组、指针、结构体、联合体和枚举,用于构建复杂的数据结构。

qq_69060498的博客 1439
上一篇: 【二叉树】二叉树的基础特性大总结
下一篇: 【Java初识】在CMD中实现第一个Java程序“Hello, World”
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值