结构体指针即结构体的地址,结构体变量存放内存中,也拥有起始地址。
定义一个变量来存放这个地址,这个变量就是结构体指针变量。
1、结构体指针变量的定义方法:
struct 结构体类型名 * 结构体指针变量名;
例1:
#include <stdio.h>
struct student
{
int num; //学号
char name[20]; //姓名
char sex; //性别
int age; //年龄
};
int main()
{
struct student *p; //struct student(结构体类型名) p(结构体指针变量名)
struct student boy;
p = &boy;
return 0;
}
2、结构体指针变量对成员的引用
1、(*结构体指针变量名). 成员
2、 结构体指针变量名 -> 成员 (常用)
3、访问结构体里面的成员三种方法
boy.num = 20; // 通过结构体变量名.成员名 访问
(*p).num= 20; // *p等效于p指向的变量boy
p -> num=20; // 指针 -> 成员名
例二,(*结构体指针变量名). 成员
#include <stdio.h>
#include<string.h> //strcpy函数的头文件
struct student
{
int num;
char name[20];
char sex;
int age;
};
int main()
{
//定义了一个struct student *类型的指针变量,变量名为p,用来保存结构体变量的地址编号
struct student *p;
struct student boy;
p=&boy;
boy.num=2022;
strcpy(boy.name,"坏坏");
boy.sex='B';
boy.age=20;
printf("***学生信息****\n");
printf(" num=%d\n name=%s\n sex=%c\n age=%d\n ",boy.num,boy.name,boy.sex,boy.age);
return 0;
}
运行结果
***学生信息****
num=2022
name=坏坏
sex=B
age=20
例三,结构体指针变量名 -> 成员
#include <stdio.h>
#include<stdlib.h> //malloc函数的头文件
#include<string.h> //strcpy函数的头文件
struct student
{
int num;
char name[20];
char sex;
int age;
};
int main()
{
//定义了一个struct student *类型的指针变量
struct student *p;
//在堆区开辟结构体空间并将其地址保存在结构体指针变量中
p=(struct student *)malloc(sizeof(struct student));
p->num=2022;
strcpy(p->name,"坏坏");
p->sex='B';
p->age=20;
printf("***学生信息****\n");
printf(" num=%d\n name=%s\n sex=%c\n age=%d\n ",p->num,p->name,p->sex,p->age);
return 0;
}
运行结果
***学生信息****
num=2022
name=坏坏
sex=B
age=20