juliusun.com
第 36/50 节 冥河C语言教程
结构体指针根据我们以前的指针定义方式,可以推测出来,定义格式为:
struct 结构体类型名 * 结构体指针名
结构体指针引用指向的内容也可以推测出来,用法为
(* 指针名).成员名
接 上一节 例子,假设有代码:
那么设置指针指向的价钱代码如下:
指针指向成员引用"(* 指针名).成员名",例子中的(*p).price为什么要将*p用小括号()括起来?
根据 C语言运算符优先级表,点.运算符优先级大于星号运算符,所以*p.price同*(p.price)。这显然是错误的写法,p是指针,不能与点运算符放在一起。因为需要加小括号将星号*和指针变量p括起来。
C语言还允许使用另一种方法引用结构体指针指向的成员,就是指向运算符->。小减号和大于号组成,用法是:
指针名 -> 成员名
意义与:
(* 指针名).成员名
相同,两种写法喜欢写哪种都行,不影响代码编译执行。
指向运算符->是本节重点。
结构体数组的定义没什么好说的,大家可以很容易推测出来,格式如下:
struct 结构体类型名 结构体数组名[元素个数]
引用数组元素格式如下:
结构体数组名[下标]
引用数组元素成员格式如下:
结构体数组名[下标].成员名
都是常规用法,不再举例。
适用于基础变量的指针和数组名混合用法,也适用于结构体。
举一个结构体数组和指针的例子,输出几本书的信息。代码如下:
效果图类似如下: