前面我们学习过的指针包括:
1、变量的指针
2、数组的指针
3、函数的指针
今天学习结构体指针:
包括两个方面: 结构体变量的指针和结构体数组的指针
1、如何定义一个指向结构体变量的指针?
(1)、首先用定义好的结构体,定义一个结构体变量,用结构体变量来为结构体指针初始化
始终理解结构体是一种特殊的数据类型,根据数据类型,可以定义变量、指针和数组。
struct student //定义了一个结构体
{
long stuid;
char name[10];
int age;
int score;
}stu1; //定义了一个结构体变量
struct student stu2; //因为结构体含有名字,所以可以继续定义结构体变量stu2
struct student *stu3; //定义了一个结构体指针
stu3=&stu1; //同指针一样,结构体指针指向结构体变量
/*可替换为
1)struct student *stu3=&stu1; //定义的同时初始化
2)struct student *stu3;
*stu3=stu1;
*/
struct student stu4[10]; //定义了一个结构体数组
(2)、如何用指针访问结构体变量的成员?
//方法一:
//同结构体变量一样,通过成员选择运算符
stu1.age=18;
(*stu3).age=19; //通过对stu3的解引用
//方法二:
//通过指向运算符来访问,例如:
stu3 -> age =19;
(3)、结构体嵌套的访问
级联访问
stu1.birthday.year = 1998;
(*stu3).birthday.year =1998;
stu3 -> birthday . year =1998;
三种方式。
2、结构体数组的指针
(1)如何定义一个结构体数组的指针
#include <stdio.h>
int main()
{
typedef struct information //定义了一个结构体
{
long stuid;
char name[10];
int age;
int score;
}info; //别名
info stu[40]; //定义了一个结构体数组
info *pt; //定义了结构体指针
pt = stu; //指针初始化方法一
info *pt1 = &stu[0]; //初始化方法二
info *pt2 = stu; //方法三
}
(2)如何访问结构体数组的指针
info stu[40]; //info为结构体标签的别名
info *pt;
pt = stu;
stu[0].stuid = 1001;
(*pt).stuid = 1001 ;
pt -> stuid =1001; //三条语句等价
stu[1].stuid =1002 ;
(pt++) -> stuid =1002;
(*pt++).stuid = 1002 ; //语句等价
更多推荐