c语言的自定义类型

本文详细介绍了C语言中的结构体声明、自引用、内存对齐规则、位段的概念及其跨平台问题、枚举的定义与优点以及联合体的使用。重点讲解了这些数据类型在内存中的存储方式和注意事项,提升代码的可读性和性能。

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

一、结构体

1、结构体的声明

如下struct是结构体的声明,里面可以放很多个不同类型的数据,而结构体就是这些值的集合,这些值又称为结构体的成员。

如下面就是利用结构体去设定一个学生的信息,如姓名,年龄这些都不是一样的数据类型,但是可以放在一个结构体类型中,从而去一下定义不同类型的数据了,这样就可以方便使用。

int main()
{
	struct Stu
	{
		char name[20];//姓名
		int age;//年龄
		char sex[5];//性别
		char id[20];//学号
	};
	return 0;
}

还用一种声明就是特殊的声明,如下这种特殊的声明就是省略标签名的声明,只定义成员变量却不定义变量名的声明。

struct
{
int a;
char b;
float c;
}x;
struct
{
int a;
char b;
float c;
}a[20], *p;

2、结构体的自引用

结构体的成员是可以放很多种的类型,所以能不能把结构体放入结构体呢,当然也是可以的,但是不能嵌入同类型的,例如下方代码1这样就是不能使用的。但是可以使用结构体指针,例如代码2就是使用结构体指针使用的嵌套。

如果没有结构体指针的话,他就会一直嵌套停不下来,所以需要一个指针结束,且必须在末尾。

//代码1
struct Node
{
int data;
struct Node next;
};

//代码2
struct Node
{
int data;
struct Node* next;
};

3、结构体变量的定义和初始化

既然我们了解什么是结构体的声明和如何嵌套,那么我们可以进行变量的定义和初始化了,如下方代码第一个Point就是一个结构体变量,然后在大括号后面的p1就是在声明结构体变量的同时定义了变量p1,而怕p2就是根据Point这个结构体类型进行定义的第二个结构体变量,这个结构体的成员和p1一样,p3就是在定义p3变量的同时进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值