首页 理论教育 第3版C语言程序设计中的结构体数组指针

第3版C语言程序设计中的结构体数组指针

时间:2023-11-23 理论教育 版权反馈
【摘要】:定义指向结构体数组的指针变量和指向结构体变量的指针变量的定义方法完全相同。应该注意的是,一个结构指针变量虽然可以用来访问结构变量或结构数组元素的成员,但是不能使它指向一个成员。

第3版C语言程序设计中的结构体数组指针

定义指向结构体数组指针变量和指向结构体变量的指针变量的定义方法完全相同。

当结构指针变量指向一个结构数组时,结构指针变量的值是整个结构数组的首地址。结构指针变量也可以指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。设ps为指向结构数组的指针变量,则ps也指向该结构数组的0号元素,ps+1指向1号元素,ps+i则指向i号元素。这与普通数组的情况是一致的。

1.指针变量指向数组元素

如果一个结构体数组元素的地址已赋予相同结构体指针变量(即指针变量指向结构体数组元素),可以使用下列两种方式来引用数组该元素的成员,其作用完全相同。

方式1:(*指针变量).成员名

方式2:指针变量→成员名

注意:这里的指针变量必须是指向某个数组元素的。例如,它指向的数组元素为“数组名[k]”,则上述两种引用方式均代表“数组名[k].成员名”。

2.指针变量指向数组首地址(www.xing528.com)

当一个结构体数组的首地址已经赋予相同结构体的指针变量(即指针变量指向结构体数组),可以使用下列两种方式来引用下标为i的数组元素成员,其作用完全相同。

方式1:(*(指针变量+i)).成员名

方式2:(指针变量+i)→成员名

注意:这里的指针变量必须是指向某个数组首地址的,则上述两种引用方式均代表“数组名[ i ].成员名”

【例10.6】用指针变量输出结构数组。

在程序中,定义了stu结构类型的外部数组boy并作了初始化赋值。在main函数内定义ps为指向stu类型的指针。在循环语句for的表达式1中,ps被赋予boy的首地址,然后循环5次,输出boy数组中各成员值。应该注意的是,一个结构指针变量虽然可以用来访问结构变量或结构数组元素的成员,但是不能使它指向一个成员。也就是说,不允许取一个成员的地址来赋予它。因此,下面的赋值是错误的:“ps=&boy[1].sex;”,而只能是“ps=boy;”(赋予数组首地址),或者是“ps=&boy[0];”(赋予0号元素首地址)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈