一、结构体指针定义
结构体指针的定义:
#include <stdio.h>
struct Strc_sister{
char name[9];
int age;
char sex[6];
};
int main(){
//定义并初始化普通结构体成员变量;
struct Strc_sister Sister_big = {
.name = "Xin Meng",
.age = 9,
.sex = "girl"
};
struct Strc_sister *P_strc1; //定义结构体指针;
return 0;
}
二、结构体指针赋值
结构体指针赋值:
#include <stdio.h>
struct Strc_sister{
char name[9];
int age;
char sex[6];
};
int main(){
struct Strc_sister Sister_big = {
.name = "Xin Meng",
.age = 9,
.sex = "girl"
};
struct Strc_sister *P_strc1; //定义结构体指针;
//将普通结构体 赋值给 结构体指针变量;
P_strc1 = &Sister_big; //结构体指针' P_strc1 '指向普通结构体' Sister_big ';
return 0;
}
三、结构体指针访问
结构体指针访问
#include <stdio.h>
struct Strc_sister{
char name[9];
int age;
char sex[6];
};
int main(){
struct Strc_sister Sister_big = {
.name = "Xin Meng",
.age = 9,
.sex = "girl"
};
struct Strc_sister *P_strc1; //定义结构体指针;
//将普通结构体 赋值给 结构体指针变量;
P_strc1 = &Sister_big; //结构体指针' P_strc1 '指向普通结构体' Sister_big ';
printf("普通结构体访问成员方式一: \tname = %s\tage = %d\tsex = %s\t\n",Sister_big.name,Sister_big.age,Sister_big.sex);
printf("指向结构体的指针访问成员方式一: \tname = %s\tage = %d\tsex = %s\t\n",(*P_strc1).name,(*P_strc1).age,(*P_strc1).sex);
printf("指向结构体的指针访问成员方式二: \tname = %s\tage = %d\tsex = %s\t\n",P_strc1->name,P_strc1->age,P_strc1->sex);
return 0;
}
四、普通结构体 与 指针结构体 访问区别
访问普通结构体成员
关键点:’ . ’ 点运算符;
printf("普通结构体访问成员方式一: \tname = %s\tage = %d\tsex = %s\t\n",Sister_big.name,Sister_big.age,Sister_big.sex);
以指针方式访问指向结构体的成员
关键点:’ * '运算符 及 ’ -> ’ 运算符;
printf("指向结构体的指针访问成员方式一: \tname = %s\tage = %d\tsex = %s\t\n",(*P_strc1).name,(*P_strc1).age,(*P_strc1).sex);
/* 以指针的方式访问结构体内部成员的方式:
1、定义的结构体指针只能与被指向的结构体的数据类型一致;
Eg: 若
定义的普通结构体是: struct Strc_pointer str_p; //' str_p '是被指向的结构体;
那么
定义的结构体指针是: struct Strc_pointer *P_strc1; //' P_strc1 '是定义的结构体指针
2、访问结构体时,注意运算符的优先级;
' * '运算符 比 ' . '点运算符低,取值时,' * '运算符必须优先' . '点运算符;
解释: 先解引用结构体指针,然后再链接结构体成员数据;
*/
printf("指向结构体的指针访问成员方式二: \tname = %s\tage = %d\tsex = %s\t\n",P_strc1->name,P_strc1->age,P_strc1->sex);
/* 以此方式用指针访问结构体成员:
1、格式: 结构体指针变量名 + '->' + 指向的普通结构体成员变量名;其中 ' -> '表示指向的意思,有解引用的意思;
Eg: P_strc->name;
*/