步子百科步子百科

student是什么意思(C语言结构体)

结构体指针变量

C语言提供了基础数据类型,意思C语言结例如char、构体int等数据类型,意思C语言结可以定义指针变量。构体那么,意思C语言结结构体类型是构体用户自己定义的数据类型,同样也可以定义指针变量。意思C语言结结构体类型定义指针变量格式如下:

struct 结构体类型名* 指针变量名;

定义指针变量的构体格式与基本数据类型定义指针变量格式一样。例如前面定义的意思C语言结读者结构体类型struct reader,可以定义指针变量如下:

struct reader* pr;

此时pr变量是构体一个指针变量,指向struct reader类型的意思C语言结变量。指针可以存放一个变量的构体地址,所以,意思C语言结pr变量可以存放一个struct reader类型变量的构体地址。例如:

struct reader r1; //定义结构体类型变量r1;

struct reader* pr = &r1; //定义指针变量pr存放r1变量的意思C语言结地址,就是指向r1变量

学习了指针的知识之后,我们可以使用指针降级运算符“*”对指针变量进行操作,把指针转换为指针所指向的对象。例如:

struct reader r2 = *pr;

此时,由于pr指向变量r1,那么,使用指针降级运算符“*”对其进行降级之后,转换为pr指针变量所指向的r1变量。那么,等价于:

struct reader r2 = r1;

就是把r1变量的数据赋给r2变量。在学习“访问结构体的成员”章节中,我们介绍了结构体变量访问其成员的方式,有如下两种方式:

(1) 结构体变量名.成员名

(2) 结构体指针变量名->成员名

那么,如果指针变量是一级指针,使用指针降级运算符“*”对指针进行降级,转换为指针所指向的结构体变量,那么,就可以以结构体变量的形式访问成员,例如:

(*指针变量).成员名。

程序测试例子如下:

程序运行结果如下:

可以看到,我们定义了指针变量pr,并设置它指向变量r1。然后,可以通过指针降级运算符“*”对指针变量pr进行操作,访问它所指向的变量。同时,可以使用指针操作符“->”直接通过指针变量访问其所指向变量的成员。

所以,结构体类型指针变量访问其成员的方式,可以总结如下:

(1) 结构体变量.成员名;

(2) 结构体指针变量->成员名;

(3) (*结构体指针变量).成员名;

注意,对于第三种方式,就是通过指针降级运算符“*”对指针变量进行降级,转换为指针变量所指向的变量。如果指针变量是一级指针,降级之后,转换为结构体变量,所以,可以以结构体变量的方式访问成员。

如果是二级指针变量,需要2个指针降级运算符“*”进行降级,转换为结构体变量才可以。程序测试例子如下:

程序运行结果如下:

可以看到,对于指针变量的操作,可以是使用指针降级运算符“*”对指针变量进行降级操作。降级指针,转换为指针变量所指向的变量。