C语言_结构体、枚举、联合体

结构体、枚举、联合体这三者都具有类似的结构,都是将一些变量或者值整合放在一起,这样做可以增加代码的可读性,也能方便编程。这篇博客中将会整理结构体、枚举、联合体的相关概念,举例介绍他们的适用场景。

结构体

定义: 结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”,其描述了一块内存区间的大小及解释意义。

结构体的声明

// 学生类型
struct Stu
{
   
   
	char name[20];
	short age;
	char sex[5];
}; 

int main()
{
   
   
	struct Stu s = {
   
    "张三", 20, "男" };
	
	return 0;
}

上面是最常规的定义方法,其中struct是结构体关键字,name、age、sex是结构体成员,s是结构体变量。通过这种方法我们就定义了struct Stu这个数据类型,就跟基本数据类型char、int、float是一样的,为了方便使用,我们使用下面的定义方式:

typedef struct Stu
{
   
   
	char name[20];
	short age;
	char sex[10];
}Stu; // 这样定义的话Stu就相当于struct Stu,后续定义对象的时候就可以省略掉struct

int main()
{
   
   
	Stu s = {
   
    "张三", 20, "男" };

	printf("%s\n", s.name);
	printf("%d\n", s.age);
	printf("%s\n", s.sex);

	return 0;
}

这样定义的话Stu就相当于struct Stu,后续定义对象的时候就可以省略掉struct。还有另一种定义方式:匿名定义。在声明结构的时候,可以不完全的声明。

// 匿名结构体类型
struct
{
   
   
	int a;
	char b;
	float c;
}x;

因为匿名结构体没有类似于Stu的标识符,所以只能在声明的时候定义变量。

结构体初始化

// 结构体的声明和初始化
struct Point
{
   
   
	int x;
	int y;
}p1; //声明类型的同时定义变量p1,p1是一个全局变量

struct Node
{
   
   
	int data;
	struct Point p;
	struct Node* next;
}n1 = {
   
    10, {
   
   4,5}, NULL }; //结构体嵌套初始化

void Test1()
{
   
   
	p1.x = 3;
	p1.y = 5;
	printf("Test1: (%d, %d)\n", p1.x, p1.y);
}

void Test2()
{
   
   
	struct Point p2; //定义结构体变量p2,未初始化,后续只能给结构体中的变量挨个赋值
	p2.x = 4;
	p2.y = 10;

	printf("Test2: (%d, %d)\n", p2.x, p2.y);
}

void Test3()
{
   
   
	struct Point p3 = {
   
    3, 5 }; //初始化:定义变量的同时赋初值

	printf("Test3: (%d, %d)\n", p3.x, p3.y);
}

void Test4()
{
   
   
	struct Node n2 = {
   
    20, {
   
   5, 6}, NULL };//结构体嵌套初始化
	printf("Test4: %d (%d, %d)", n2.data, n2.p.x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值