C语言结构体(5) 结构体指针变量
C语言提供了基础数据类型,例如char、int等数据类型,可以定义指针变量。那么,结构体类型是用户自己定义的数据类型,同样也可以定义指针变量。结构体类型定义指针变量格式如下:
struct 结构体类型名* 指针变量名;
定义指针变量的格式与基本数据类型定义指针变量格式一样。例如前面定义的读者结构体类型struct reader,可以定义指针变量如下:
struct reader* pr;
此时pr变量是一个指针变量,指向struct reader类型的变量。指针可以存放一个变量的地址,所以,pr变量可以存放一个struct reader类型变量的地址。例如:
struct reader r1; //定义结构体类型变量r1;
struct reader* pr = &r1; //定义指针变量pr存放r1变量的地址,就是指向r1变量
学习了指针的知识之后,我们可以使用指针降级运算符“*”对指针变量进行操作,把指针转换为指针所指向的对象。例如:
struct reader r2 = *pr;
此时,由于pr指向变量r1,那么,使用指针运算符“*”对其进行降级之后,转换为pr指针变量所指向的r1变量。那么,等价于:
struct reader r2 = r1;
就是把r1变量的数据赋给r2变量。在学习“访问结构体的成员”章节中,我们介绍了结构体变量访问其成员的方式,有如下两种方式:
(1) 结构体变量名.成员名
(2) 结构体指针变量名->成员名
那么,如果指针变量是一级指针,使用指针降级运算符“*”对指针进行降级,转换为指针所指向的结构体变量,那么,就可以以结构体变量的形式访问成员,例如:(*指针变量).成员名。
程序测试例子如下:
程序运行结果如下:
可以看到,我们定义了指针变量pr,并设置它指向变量r1。然后,可以通过指针降级运算符“*”对指针变量pr进行操作,访问它所指向的变量。同时,可以使用指针操作符“->”直接通过指针变量访问其所指向变量的成员。
所以,结构体类型指针变量访问其成员的方式,可以总结如下:
(1) 结构体变量.成员名;
(2) 结构体指针变量->成员名;
(3) (*结构体指针变量).成员名;
注意,对于第三种方式,就是通过指针降级运算符“*”对指针变量进行降级,转换为指针变量所指向的变量。如果指针变量是一级指针,降级之后,转换为结构体变量,所以,可以以结构体变量的方式访问成员。
如果是二级指针变量,需要2个指针降级运算符“*”进行降级,转换为结构体变量才可以。程序测试例子如下:
程序运行结果如下:
可以看到,对于指针变量的操作,可以是使用指针降级运算符“*”对指针变量进行降级操作。降级指针,转换为指针变量所指向的变量。
更多的交流可以访问:www.mylinux.vip 加QQ:1523520001,微信:13926572996,备注:linux编程;
学习、分享更多的linux C/C++ 编程知识。