当一个指针变量指向一个结构变量,这个指针就成了结构指针变量
语法如下:
struct 结构名称 * 结构指针名称
struct Student * pst; //定义一个结构指针变量pst
注意点:
- 结构变量名不会转为内存首地址
- 数组名会转为内存首地址
结构指针变量访问方式:
- (*结构指针名称).成员名称
- 结构指针名称->成员名称
- 点号 . 优先级高于星号 *
#include <stdio.h>
/*
时间:2022-05-11 19:19
作者:sgbl888
功能:结构与指针
知识点:
1、结构变量名不是内存首地址
2、数组名是内存首地址
3、指针访问结构成员有两种方式:1、通过 (*指针名称).成员名称 2、通过 指针名称->成员名称
4、点号.的优先级高于星号*号
*/
struct Student{
char name[20]; //姓名
int num; //学号
float score; //成绩
};
int main(){
struct Student st1 = {
.name = "李小花",
.num = 1001123,
.score = 78.5
};
//结构指针
struct Student *pst;
//pst = st1; //错误,因为结构变量名不像数组名是内存首地址,因此需要用取地址&运算符
pst = &st1;
printf("姓名:%s\n", (*pst).name); //因 点号运算符优先级高于*号,因此需要用括号括起来
printf("学号:%d\n", pst->num); //通过 -> 号访问
return 0;
}