指向结构体的指针

指向结构体的指针


2024年5月25日发(作者:)

9.1.9 指向结构体的指针

1. 结构体指针变量声明的一般形式

与一般变量一样,可以使一个指针变量指向结构体,从而形成结构体指针变量。其值

是所指向的结构体变量的首地址。通过结构体指针即可访问该结构体变量,这与数组指针

和函数指针的情况是相同的。结构体指针变量声明的一般形式为:

struct 结构名 *结构指针变量名;

对前面定义的结构体hero,可以使一个指针phero指向hero类型的某个变量:

struct hero *phero;

既然结构体指针变量也是一种结构体变量,当然可以使用其他的两种定义结构体变量

的方式定义结构体指针变量。具体定义方式此处不再叙述。

2. 为何需要结构体指针变量

之所以引入结构体指针变量,出于以下原因:

更易于操作

类似于数组指针比数组更易于操作一样(如排序问题),结构体指针比结构体本身更加

的易于操作。

更强的通用性

一些早期的C语言实现不支持将结构体变量作为参数传递给函数,但是结构体指针变

量却可以。

丰富的数据表示

许多奇妙的数据表示,如文件指针,都包含指向结构体的指针。

3. 指针变量到底指向什么?

与前面讨论的各类指针变量相同,结构指针变量也必须要先赋值后才能使用。赋值是

把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。

例如,下面对结构体指针变量phero1的赋值是正确的:

*phero1=&wusong;//将变量wusong的首地址赋值给指针变量phero

但是下面的赋值是错误的:

*phero2=&hero; //错误!

前面笔者已经强调过,结构体名和结构体变量是两个不同的概念,不能混淆。结构体

名只能表示一个结构形式,编译系统并不为其分配内存空间。只有当某变量被定义为这种

类型的结构体时,才为该变量分配存储空间。所以&wusong的形式是正确的,表示结构

体变量wusong的首地址,而&hero的形式是错误的,因为系统没有为hero分配内存,


发布者:admin,转转请注明出处:http://www.yc00.com/web/1716625193a2729262.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信