指向结构的指针
一个指针指向结构时,称为结构指针变量
结构指针变量中的值是所指向的结构变量的首地址
一般形式: struct 结构名称 * 结构指针变量名;
访问结构成员的一般形式:
(* 结构指针变量).成员名
结构指针变量 -> 成员变量名
练习1、
# include<stdio.h>
# include<string.h>
struct Menpai
{
int id; //门派的ID
char name[50]; //门派的名称
int count; //门派的人数
int type;// 门派的类别——1为正牌,2为中立,3为邪派
};
struct Player
{
int id; //玩家的id
char name[50]; //玩家的姓名
int login; //玩家的账号
char pass[50]; //玩家的登录密码
char sex; //玩家的性别
struct Menpai menpai ; //玩家所属门派
};
int main()
{
struct Player player = { 1,"mamba",12456,"123",'f',{1,"洛克萨斯",500,1} };
printf("玩家姓名:%s\n玩家所属门派名:%s\n", player.name,player.menpai.name);
struct Player player2 = { 2,"小飞侠",12456,"123",'f',{1,"德玛西亚",500,1} };
struct Player *ptr_player2 = &player2;
//使用指针访问
printf("玩家姓名:%s\n玩家所属门派名:%s\n", (*ptr_player2).name,(*ptr_player2).menpai.name);
printf("玩家姓名:%s\n玩家所属门派名:%s\n", ptr_player2->name,ptr_player2->menpai.name);
return 0;
}
练习2:
# include<stdio.h>
# include<string.h>
struct Student
{
int id; //学生的id
char name [50]; //学生的姓名
int age ; //学生的年龄
};
int main()
{
struct Student student; // 定义struct Student 结构类型的变量student
struct Student *p; //定义指向struct Student 类型数据的指针变量p
p = &student; // p指向student
student.id = 1;
strcpy(student.name,"zhang");
student.age = 20;
printf("输入的学生信息为:\n");
printf("id:%d\tname:%s\tage:%d\n",student.id,student.name,student.age);
printf("id:%d\tname:%s\tage:%d\n",(* p).id,(* p).name,(* p).age);
printf("id:%d\tname:%s\tage:%d\n",p->id,p->name,p->age);
return 0;
}