结构体指针知识要点总结

博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论⭐留言  如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN🙉🙉🙉
未来很长,值得我们全力奔赴更美好的生活!💞💞💞

首先是typedef关键字的用法:

基本定义:
typedef为C语言的关键字,作用是为一种数据类型 定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

用途一:与#define的区别
typedef 行为有点像 #define 宏,用其实际类型替代同义字。不同点是 typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。

用途二:减少错误
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。
————————————————
版权声明:本文为CSDN博主「BSP初级小学僧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46094737/article/details/126136629

	typedef struct //关键字typedef 
	{
		int id;
		int score;
	}Stu_i;//爱称(相当于数据类型) 
	
	Stu_i stu01={2202,89},stu02;

另外typedef在使用时,可以省略结构体变量名,可以看到在这里我们是直接不写结构体变量名

typedef struct //关键字typedef

可以看到如果没有使用typedef关键字的时候,这个就是一个匿名结构体。

在不使用typedef关键字的时候,编译器会出现警告,只限于有单个结构体变量时,在出现多个结构体变量时,程序会直接报错,这里切记切记。

2、结构体指针的嵌套用法

typedef struct
	{
		int id;
		char name[10];
		bir *pbir;
	}stu_i;

例如,要统计一个学生的信息,信息包含学号、名字和出生日期。但是出生日期又包含了年月日三个信息,一一声明当然也可以,这里使用指针嵌套的方法进行声明。

1、先声明一个带有指针的结构体,代码见上。

2、再声明一个出生日期的结构体

typedef struct 
	{
		int year;
		int month;
		int day;
	}bir;

3、将指针指向含有出生日期信息的变量地址

stu_i stu01=
	{
		.id=2022,
		.name="夏洛特",
		.pbir=&bir_test
	};

4、初始化、然后打印。

源代码:

#include <stdio.h>
#include <string.h>
void struct_test(void);
int main()
{
	struct_test();
	
	return 0;
}

void struct_test(void)
{
	typedef struct 
	{
		int year;
		int month;
		int day;
	}bir;
	
	typedef struct
	{
		int id;
		char name[10];
		bir *pbir;
	}stu_i;
	
	bir bir_test=
	{
		.year=2022,
		.month=7,
		.day=25
	};
	
	stu_i stu01=
	{
		.id=2022,
		.name="夏洛特",
		.pbir=&bir_test
	};
	
	printf("%d\n",stu01.id);
	printf("%s\n",stu01.name);
	printf("%d-%d-%d",stu01.pbir->year,stu01.pbir->month,stu01.pbir->day);
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不掉头发的程序猿_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值