系列文章目录
🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼
🎉🎉我的C语言初阶合集:C语言初阶合集,希望能帮到你!!!😍 😍
🔍🔍我的C语言进阶合集:我的C语言进阶合集,期待你的点击!!!🌈🌈
文章目录
- 系列文章目录
- 前言
- 一、结构体的定义
- 二、结构体的语法
- (2.1)定义结构体类型
- (2.2)声明结构体变量
- (2.3)初始化结构体变量
- 三、结构体的使用
- 四、注意事项
- 五、代码展示
- 总结
- END
前言
大家好,今天我来给各位分享C语言中自定义类型——结构体(struct),
结构体允许我们将多个不同类型的数据组合成一个单一的数据类型,从而可以更方便地管理和操作这些数据。
我将从其定义、语法、使用,注意事项,最后用代码来展示结构体的具体使用。
一、结构体的定义
结构体是C语言中的一种用户自定义的数据类型,
它允许我们将不同类型的数据项组合在一起,形成一个复合数据类型。
二、结构体的语法
(2.1)定义结构体类型
struct 结构体名称
{数据类型 成员变量1;数据类型 成员变量2;...数据类型 成员变量N;
};
- 例如,定义一个表示学生信息的结构体类型:
struct Stu
{char name[20];int age;
};
(2.2)声明结构体变量
- 在定义了结构体类型之后,我们可以声明该类型的变量。
单独声明:
struct Stu stu1;
struct Stu stu2;
在定义时直接声明:
struct Stu
{char name[20];int age;
} stu1, stu2;
(2.3)初始化结构体变量
可以通过直接赋值或使用指定初始化器进行初始化。
直接赋值:
struct Stu stu1 = {"Alice", 20};
或者使用C99标准中的指定初始化器:
struct Stu stu1 = { .name = "Alice", .age = 20 };
三、结构体的使用
自定义类型结构体变量可以通过点操作符(
.
)来访问其成员。
#include <stdio.h>struct Stu
{char name[20];int age;
};int main()
{struct Stu stu1 = { "Alice", 20};// 访问和打印结构体成员printf("Name: %s\n", stu1.name);printf("Age: %d\n", stu1.age);return 0;
}
输出结果展示:
四、注意事项
1、结构体类型的命名:通常使用大写字母开头的驼峰命名法(如
Stu
)来命名结构体类型,以区分普通变量类型。
2、结构体变量的作用域:与普通变量一样,结构体变量的作用域由其声明位置决定。
3、内存对齐:编译器可能会为了优化访问速度而对结构体成员进行内存对齐,这可能会导致结构体实际占用的内存比成员变量总和大。
4、嵌套结构体:一个结构体可以包含另一个结构体作为成员。
- 如:
struct Addr
{char street[20];char city[20];
};struct Stu
{char name[20];int age;struct Addr addr;
};
5、结构体指针:可以通过指针来访问结构体成员,这在处理大型结构体或动态分配内存时非常有用
struct Stu* ps = &stu1;
printf("Name: %s\n", ps->name);
五、代码展示
代码示例:
- 以下是一个完整的示例程序,展示了如何定义结构体、声明结构体变量、初始化结构体以及通过结构体指针访问成员。
#include <stdio.h>// 定义一个存储地址的结构体
struct Addr
{char street[20];// 存储街道名称char city[20]; // 存储城市名称
};// 定义一个存储学生信息的结构体
struct Stu
{char name[20]; // 存储学生姓名int age; // 存储学生年龄struct Addr addr;// 嵌套的地址结构体
};int main()
{// 初始化结构体变量 stu1// 初始化时也初始化嵌套的 addr结构体struct Stu stu1 = { "Alice", 20, {"1haoStreet", "beijing"} };// 访问和打印结构体 stu1 的成员 printf("Name:%s\n", stu1.name); // 打印学生姓名printf("Age:%d\n", stu1.age); // 打印学生年龄printf("street:%s\n", stu1.addr.street); // 打印学生地址的街道printf("city:%s\n", stu1.addr.city); // 打印学生地址的城市// 打印分隔线printf("----------------------------------------------------\n");// 使用结构体指针访问和打印成员struct Stu* ps = &stu1; // 创建指向 stu1 的指针 psprintf("Name:%s\n", ps->name); // 使用指针访问并打印学生姓名printf("Age:%d\n", ps->age); // 使用指针访问并打印学生年龄printf("street:%s\n", ps->addr.street );// 使用指针访问并打印学生地址的街道printf("city:%s\n", ps->addr.city ); // 使用指针访问并打印学生地址的城市return 0;
}
输出结果展示:
总结
通过以上分享和示例,相信大家对C语言中的结构体有了更深入的理解。
结构体是C语言中非常强大和灵活的一种数据类型,能够帮助我们更好地组织和管理数据。
END
每天都在学习的路上!
On The Way Of Learning