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

被折叠的 条评论
为什么被折叠?



