【C语言】结构体、枚举、联合体

【C语言】结构体、枚举、联合体


### 文章目录

  • [@TOC(文章目录)](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [前言](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [一、结构体声明](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [1.一般格式](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [2.typedef 重命名结构体类型定义变量](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [二、结构体数组](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [三、结构体与指针及函数传参](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [四、结构体传参](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [五.结构体在内存的存储](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [六、参考文献](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
  • [总结](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)

前言

使用工具:

1.编译器:VScode

2.C Primer Plus 第六版-1


提示:以下是本篇文章正文内容,下面案例可供参考

一、结构体声明

1.一般格式

结构体标签+结构体变量名=结构体类型=

struct +stu

结构体标签+结构体变量名+定义变量=

struct +stu +s

c 复制代码
struct stu s
c 复制代码
struct stu
{
	char name[20];
	char gender[10];
	int age;
	float score;
};


int main()
{
	struct stu s={"王二麻子", "男", 22, 98.8};
	printf("%s %s %d %0.2lf\n",s.name,
		                                        s.gender,
		                                        s.age,
		                                        s.score);
	return 0;
}
c 复制代码
王二麻子 男 22 98.80

2.typedef 重命名结构体类型定义变量

typedef +结构体标签+结构体变量名=结构体类型=新结构体变量名

typedef+struct +stu=stu1

c 复制代码
typedef struct stu
{
}stu1;

将struct stu重定义为stu1,此时,stu1可代替struct stu创建变量

新结构体类型+定义变量

stu1+s

c 复制代码
stu1 s
c 复制代码
typedef struct stu
{
	char name[20];
	char gender[10];
	int age;
	float score;
}stu1;


int main()
{
	stu1 s={"王二麻子", "男", 22, 98.8};
	printf("%s %s %d %0.2lf\n",s.name,
		                                        s.gender,
		                                        s.age,
		                                        s.score);
	return 0;
}
c 复制代码
王二麻子 男 22 98.80

二、结构体数组

typedef +结构体标签+结构体变量名=结构体类型=新结构体变量名

typedef+struct+stu=stu1

结构体类型+数组元素类型=结构体数组类型

stu1+stu3

c 复制代码
typedef struct stu
{
	char name[20];
	char gender[10];
	int age;
	float score;
}stu1;

int main()
{
	int i;
	stu1 stu[3]={{"李四", "男", 22, 98.8},{"张三","男",21,95.5},{ "翠花", "女", 20, 99} };
	int sz=sizeof(stu)/sizeof(stu[0]);
	printf("%s %s %s %s\n","姓名","性别","年龄","得分");
	for(i=0; i<sz; i++)
	{
			printf("%s  %s  %d  %0.2lf\n",stu[i].name,
		                                                  stu[i].gender,
		                                                  stu[i].age,
		                                                  stu[i].score);
	}
	 return 0;
}
c 复制代码
姓名 性别 年龄 得分
李四  男  22  98.80
张三  男  21  95.50
翠花  女  20  99.00

三、结构体与指针及函数传参

指针访问成员变量 一般使用 -> 操作符

即通过地址访问成员变量使用->

通过值访问成员变量使用.

c 复制代码
typedef struct stu
{
	char name[20];
	char gender[10];
	int age;
	float score;
}stu1;


int main()
{
	stu1 s={"王二麻子", "男", 22, 98.8};
	stu1 *p=&s; 
	printf("%s %s %d %0.2lf\n",					p->name,
												(&s)->gender,
												(*p).age,
												s.score);
	return 0;
}
c 复制代码
王二麻子 男 22 98.80

四、结构体传参

值传递:形参是实参的一份临时拷贝,函数执行完成时,分配给形参的内存自动销毁。

址传递:传的是变量的地址,通过地址可以访问,并且可以修改变量的值。

建议结构体传参,不管是用来访问结构体成员,还是修改结构体成员都建议传地址过去

c 复制代码
typedef struct stu
{
	char name[20];
	char gender[10];
	int age;
	float score;
}stu1;

void print1(stu1  s)
{
	printf("%s\n",s.name);
	printf("%s\n",s.gender);
	printf("%d\n",s.age);
	printf("%0.2lf\n",s.score);
}
void print2(stu1* p)
{
    printf("%s\n",p->name);
	printf("%s\n",p->gender);
	printf("%d\n",p->age);
	printf("%0.2lf\n",p->score);
}
int main()
{
	 stu1 s={"王二麻子", "男", 22, 98.8};
	 print1(s);
     print2(&s);
	 return 0;
}
c 复制代码
王二麻子
男
22
98.80
王二麻子
男
22
98.80

五.结构体在内存的存储

六、参考文献

自定义类型-结构体详解

总结

本文仅仅简单介绍了【C语言】结构体、枚举、联合体验证,评论区欢迎讨论。

相关推荐
魔力女仆5 小时前
分享一个 JS 鼠标跟随贪吃蛇背景库
开发语言·javascript·计算机外设
2401_894915536 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
麻瓜老宋6 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十二步,分号赋值链式修复、TOKEN_ASSIGN
c语言·开发语言·atomcode
颜x小8 小时前
[C#] C++与c#语法对比
开发语言·c++·c#
weixin_423652139 小时前
C#使用JObject
开发语言·c#
国科安芯9 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
霸道流氓气质10 小时前
Java中集成Smile 技术教程:从入门到工程实践
java·开发语言
BerrySen17811 小时前
迈向 Next-Gen Java:企业级高并发架构演进与大模型 Agent 落地深度实战
java·开发语言·架构
SilentSlot11 小时前
【C/C++】手写 DPDK 协议栈(十一):基于 PPS、SYN 比例和源 IP 熵的 DDoS 检测
c语言·c++·tcp/ip
Nebula_g11 小时前
Java实现本地Socket通信(三)
java·开发语言·学习·socket·可视化