【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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

太阳予野花

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

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

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

打赏作者

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

抵扣说明:

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

余额充值