自定义类型(结构体、枚举、联合体)

本文详细介绍了结构体、枚举和联合体这三种自定义类型。结构体包括声明、匿名结构体、初始化、内存对齐等概念;枚举用于声明一组命名的常量,增加了代码的可读性和可维护性;联合体(共用体)的成员共享同一内存空间,其大小至少为最大成员的大小。文章还探讨了内存对齐的原因和影响,并给出了实例解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、结构体

结构是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量.

结构体声明

结构的成员可以是标量、数组、指针,甚至是其他结构体,比如想描述一个学生的信息,这时我们就可以创建一个结构体类型。

//声明一个学生类型,是想通过学生类型来创建学生变量(对象)
//描述学生:属性:名字+电话+性别+年龄

struct Stu  //struct是结构体关键字,Stu(可以是别的英文)是结构体标签
{
   	    //sttuct Stu是结构体类型

	//以下的是结构体成员
	char name[20];//名字

	char tele[12];//电话

	char sex[10];//性别

	int age;//年龄

}s4,s5,s6;//这里的s4,s5,s6创建的是结构体全局变量//分号不能丢

struct Stu s3;//结构体全局变量

int main()
{
   
	//s1,s2是创建的结构体局部变量
	struct Stu s1;
	struct Stu s2;
	return 0;
}

特殊的声明(匿名结构体)

在声明结构的时候,可以不完全的声明。

比如:

//匿名结构体类型
//在声明结构体的时候可以不完全声明
struct
{
   
	int a;
	int b;
	int c;
}x;//匿名结构体变量只能在这里创建

struct
{
   
	int a;
	int b;
	int c;
}a[20],*p;//匿名结构体变量只能在这里创建

上面两个结构体在声明的时候省去了结构体标签,只有一个结构体关键字(struct),这种声明是匿名结构体声明,只能在声明匿名结构体的时候同时创建变量。

结构体定义和初始化

在定义结构体变量的时候给它赋值就是结构体初始化

struct Point
{
   
	int x;
	int y;
}p1; //声明类型的同时定义变量p1,p1是个全局变量

struct Point p2; //定义结构体全局变量p2

//初始化:定义变量的同时赋初值。
struct Point p3 = {
    1, 2 };

struct Stu //类型声明
{
   
	char name[15];//名字
	int age;//年龄
};

struct Stu s = {
    "zhangsan", 20 };//初始化

struct Node
{
   
	int data;
	struct Point p
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值