千家信息网

C语言指针和结构体实例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天小编给大家分享一下C语言指针和结构体实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2026年11月03日C语言指针和结构体实例分析

今天小编给大家分享一下C语言指针和结构体实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。


指针和结构体

前面我们讲述指针的时候,已经向大家介绍过使用指针去指向普通变量,指向函数,指向数组,指向字符串等操作,由于当时还没有介绍结构体,因此是没有讲述指针指向结构体的。但是,指针作为C语言中最具有标志性的特征,指向结构体也是必定支持的,指向结构体的指针就是本小节要讨论的结构体指针。

在讨论结构体指针之前,我们先来定义一个结构体。定义这个结构体的步骤为,先用"typedef"关键词声明一个结构体的存储类型。

typedef struct
{
char name[20];
int age;
int id_num;
} student_t;

接着,使用这个结构体类型去定义一个结构体变量,"student_t Xiaoming;"。

当这个描述小明信息的结构体变量被定义好之后,实际上编译器会在内存上面开辟出一块内存区域来存储这个结构体变量,如图1所示。

图1 结构体内存排放

当这个结构体内存被定义好之后,我们可以使用"Xiaoming.结构体成员名"的形式来访问这个结构体内存的任意一个成员。那么这个结构体变量的名称具体代表的是什么呢?我们可以使用printf函数将这个结构体变量名和内部各个成员变量的地址打印出来,如图2所示。很显然,结构体变量名的地址和结构体中第一个成员变量的首地址是保持一致的,因此我们可以推理出,结构体变量的名称的地址就是代表着结构体首地址。

图2 结构体变量名的地址和成员变量的地址

基于上面讨论的内容,我们可以尝试一下去定义一个指针,指向这个结构体。但是这个指针究竟应该定义什么类型的呢?前面我们讲指针基础的时候就说过,指向某个变量的指针,其数据类型应该和其指向的内容保持一致。那么指向这个结构体的指针难道我们要使用struct类型的指针,如"struct *pt"?

很显然,这是错误的,因为我们之前讨论过,为什么指向某个变量的指针,其数据类型应该和其指向的内容保持一致。其根本原因是因为要使得指针的增长和其内存保持一致的变化。因此,如果定义"struct *pt"这样的指针,肯定是毫无意义的,语法上也肯定是不对的。

我们前面讲结构体的时候也说过,struct关键词用来申明结构体的时候,归根到底声明的其实是这个结构体的存储类型,因此对于这个结构体,我们已经用typedef将其声明为一个新的数据类型了,所以要定义的这个指针应该是"student_t *stu_pt;"。

现在指向这个结构体的指针已经被定义好了,那么接下来的内容就应该是如何指向这个结构体。按照我们之前的经验,指向操作其实就是将指向对象的地址赋值给一个指针变量,因此这个指向操作就非常简单了,"stu_pt = &Xiaoming"。如图3所示。

图3 定义指向结构体的指针

从图3中我们可以看到,此时指针的内容和其指向的结构体的首地址是一样的,因此我们可以初步判断这个结构体指向操作是正确的。

现在我们已经了解了如何去定义一个结构体指针,以及如何去利用这个结构体指针去指向一个结构体,那么现在问题来了,我们定义结构体的初衷是为了是某几个相关的变量有序地排列在一起,并且对这个结构体变量中的每一个成员都能引用,并且进行读写,而现在,我们定义好了一个结构体指针并且指向了一个结构体变量,那么我们能否使用这个结构体指针去引用其指向的那个结构体里面的成员变量呢?如果可以,那么该如何引用?

在回答这个问题之前,我们来回顾下,一个结构体变量其引用指针的时候,是使用"结构体变量名.成员变量名"的形式。那么对于一个结构体指针来说,这种结构体变量成员名称的引用方式是不被允许的。对于一个指向结构体变量的结构体指针来说,我们应该使用指向符号"->"来引用这个结构体指针指向的结构体变量的成员变量。这一点一定要切记。

如,我们可以利用"student_t"类型定义一个结构体变量Xiaoming,接着再去使用一个结构体指针去指向这个变量。我们先对Xiaoming这个结构体变量里面的成员变量name赋值,接着使用结构体指针去读出。然后再使用结构体指针对age变量赋值,接着再使用结构体变量去读出,如图4所示。

图4 结构体指针访问结构体变量

以上就是"C语言指针和结构体实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

结构 指针 变量 指向 成员 地址 类型 内容 内存 时候 一致 就是 知识 篇文章 如图 语言 名称 数据 存储 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网科技集团 鸠鸠互联网科技 互联网科技有限公司图片 没上市的科技互联网公司 凡科互联网科技 苏州互联网科技贷款公司 互联网金融科技平台 时间互联网络科技 金融科技和互联网金融 联恩商钥互联网科技有限公司 四个字互联网科技公司取名 卫星互联网科技股票 金融科技与互联网金融相同和不同 互联网大会黑科技排名 互联网公司高科技产品 上海钢联属于互联网科技股吗 浙南科技城互联网大厦招聘 山东大美朱楼互联网科技有限公司 中国科技和美国互联网 互联网科技企业文化 科技和互联网公司 互联网是不是新科技 狮子座互联网科技 汉立互联网科技有限公司联系电话 洛阳昕诺飞互联网科技有限公司 华中科技大学互联网的牛人 北京互联网科技类企业分布 美国五大互联网科技公司市值多少 互联网企业和网络科技有限公司 科技发展第三阶段互联网时代
0