【摘要】:一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的首地址。有了结构体指针变量,就能方便地访问结构体变量的各个成员。下面通过例子来说明结构体指针变量的具体说明和使用方法。图7.6程序运行结果说明:程序定义了一个结构stu,定义了stu 类型结构体变量boy1,并初始化赋值,还定义了一个指向stu 类型结构的指针变量pstu。
一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的首地址。通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的应用相同。结构体指针变量说明的一般格式:

例如:

结构体指针变量也要先赋值才能使用。赋值是把结构体变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。上述语句中将结构体变量s1 的地址赋值给指向结构体变量的指针变量pstu。
结构体名和结构体变量是两个不同的概念,不能混淆。结构体名只能表示一个结构形式,编译系统并不对它分配内存空间。只有当某变量被说明为该类型的结构时,才对该变量分配存储空间。有了结构体指针变量,就能方便地访问结构体变量的各个成员。访问的一般格式:

或为:

例如
(www.chuimin.cn)
或者:

应该注意(*pstu)两侧的括号不能少,因为成员符“.”的优先级高于“*”。下面通过例子来说明结构体指针变量的具体说明和使用方法。
【例7.5】指向结构体变量的指针的应用。程序如下:

程序运行结果如图7.6 所示。

图7.6 程序运行结果
说明:程序定义了一个结构stu,定义了stu 类型结构体变量boy1,并初始化赋值,还定义了一个指向stu 类型结构的指针变量pstu。在主函数main 中,pstu 被赋予boy1 地址,因此pstu 指向boy1。然后在printf 语句中用了三种形式输出boy1 各成员值。从运行结果可以看出,结构体变量.成员名、(*结构体指针变量).成员名与结构体指针变量→成员名等效。
相关推荐