【C进阶 1】 结构体

文章详细介绍了C语言中的结构体类型,包括如何定义结构体类型、声明结构体变量、初始化结构体以及结构体变量的引用。强调了结构体在编程中的重要性,如简化复杂数据的表示,并提供了结构体类型重命名的typedef用法。此外,还提到了结构体定义的规范和注意事项,如避免空定义和规范的头文件使用。

结构体

1. 结构体类型的定义

struct stu //定义结构体类型
	{
		char name[20];//名字
		int age;//年龄
		float higth;//身高
	};

这段代码什么意思呢?首先,我们先了解int。int是一种数据类型,相当于是只有一个特征的人(类型),因为int只能放下一个数据。int a;就是定义有一个叫a的只有一个特征的人。int a=20;就是说有a这个只有一个特征的人,他的特征——年龄是20岁。
然后我们再来看这段代码,struct stu就是相当于一个有很多特征的人(类型),与int不同的是,我们用这个类型描述一个人,可以有很多描述方法,名字身高年龄等。所以说我们为什么叫定义一个数据类型。这里我们先不给特征赋值。

2. 结构体类型的申明

结构体类型的申明结构与结构体类型定义一样。即定义等于申明
所以在我们在进行编写C项目时。

  • 比如test.c和main.c文件我都想用struct stu这个结构体类型来定义一个人。那么申明就要放在头文件给大家用。
  • 如果这是我这个test.c要用这个结构体类型来定义,那么我就不需要放头文件供大家使用。

3. 结构体变量的定义

  • 定义类型顺便定义变量
	struct stu 
	{
		char name[20];
		int age;
		float higth;
	}taiyang;//定义了但是没有初始化 		

taiyang被struct stu这种描述人的类型来修饰自己。

  • 类型自己定义,变量自己定义
struct stu //定义结构体类型
	{
		char name[20];
		int age;
		float higth;
	};
struct stu	taiyang = { "taiyang",20,173.5 };//定义并初始化

4. 结构体变量的声明

  • 定义类型顺便申明
struct stu     
	{
		char name[20];
		int age;
		float higth;
	}taiyang; 

我们可以看到:结构体变量的申明和定义都一样。放在头文件和源文件。区别就是作用域不同,放在头文件。直接定义声明一把过,其他文件还可以用taiyang这个变量。但是放在源文件就只能在当前源文件使用taiyang这个人去修改他的身高等信息。

  • 类型自己定义,变量自己定义
struct stu	taiyang;

5. 结构体类型重定义

typedef  struct stu
{
	char name[20];
	int age;
	float higth;
}stu; 

把struct stu这个结构体类型更名为stu,这样更方便,因为我们每次定义一个结构体变量的时候都要struct stu taiyang,很麻烦,这样改名可以直接让我们stu taiyang ;

6. 注意事项

6.1 结构体类型空定义

struct 
{
	char name[20];
	int age;
	float higth;
}stu;  

最好避免产生这样的定义,结构体类型是struct +(空),不利于下一个结构体的定义和结构体类型的定义。

6.2 结构体规范定义

结构体的定义和使用最好是按照规范来,首先我们要把结构体的结构体类型放在头文件,然后在去定义结构体并给他赋初始值。
头文件:

struct stu 			//申明和定义结构体类型
{
	char name[10];
	int age;
	float higth;
};
struct stu taiyang;//申明结构体变量

源文件:

#include"hehe.h"
struct stu	taiyang= { "taiyang",20,173.5 };
//定义并赋初值

7. 结构体变量的初始化和引用

7.1 结构体变量的初始化

结构体变量是一种变量,我们定义变量时最好给变量初始化。所以我们在结构体定义的时候就直接赋值的。

struct stu	weichunchao = { "taiyang",20,173.5 };

7.2 结构体变量的引用

用  .  引用
taiyang.age=20;

用指针引用 ->
struct stu* p=&taiyang;
p->age=20;
数据集介绍:电力线目标检测数据集 一、基础信息 数据集名称:电力线目标检测数据集 图片数量: 训练集:2898张图片 验证集:263张图片 测试集:138张图片 总计:3299张图片 分类类别: 类别ID: 0(电力线) 标注格式: YOLO格式,包含对象标注信息,适用于目标检测任务。 数据格式:JPEG/PNG图片,来源于空中拍摄或监控视觉。 二、适用场景 电力设施监控与巡检: 数据集支持目标检测任务,帮助构建能够自动识别和定位电力线的AI模型,用于无人机或固定摄像头巡检,提升电力设施维护效率和安全性。 能源与公用事业管理: 集成至能源管理系统中,提供实时电力线检测功能,辅助进行风险 assessment 和预防性维护,优化能源分配。 计算机视觉算法研究: 支持目标检测技术在特定领域的应用研究,促进AI在能源和公用事业行业的创新与发展。 专业培训与教育: 数据集可用于电力行业培训课程,作为工程师和技术人员学习电力线检测与识别的重要资源。 三、数据集优势 标注精准可靠: 每张图片均经过专业标注,确保电力线对象的定位准确,适用于高精度模型训练。 数据多样性丰富: 包含多种环境下的电力线图片,如空中视角,覆盖不同场景条件,提升模型的泛化能力和鲁棒性。 任务适配性强: 标注格式兼容YOLO等主流深度学习框架,便于快速集成和模型开发,支持目标检测任务的直接应用。 实用价值突出: 专注于电力线检测,为智能电网、自动化巡检和能源设施监控提供关键数据支撑,具有较高的行业应用价值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳予野花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值