如何去除结构体变量中的每一个成员
1、结构体变量名.成员名
2、指针变量名->成员名 (第二种方式更常用)
指针变量名 -> 成员名 在计算机内部会被转化成 (*指针变量名).成员名的方式去执行
所以说这两种方式是等价的
struct Student
{
int age;
float score;
char sex;
};
int main(void)
{
struct Student st = {80,66.6,'F'}; // 第一个是定义的同时去赋值,初始化 定义的同时赋初始值
struct Student *pst = &st; // &st 不能够改成 st
// pst变成一个指针了
//写* 表示 pst 能存放前面 这个struct Student类型的地址 ,把struct Student 当作是 int
pst->age = 88; // 第二种方式
st.score = 66.6f; //第一种方式 f 浮点型
// 66.6在C语言中默认是double类型,如果希望一个实数是float类型,则必须在 66.6 后面加 f 或 F ,因此 66.6 是double,66.6f或 66.6F 是float
printf("%d %f\n", st.age, pst -> score);
//上来就直接编译,不管程序报不报错
return 0;
}
pst->age 在计算机内会被转化成 (*pst).age, 没有为什么,这就是 ->的含义,这是一种硬性规定
所以 pst -> age 等价于 (*pst).age 也等价于 st.age
很重要,讲链表的时候要用到 通常只使用 pst -> age
我们之所以知道pst -> age 等价于 st.age 是因为 pst -> age 是被转化成了(*pst).age 来执行的
pst -> age的含义:(要背会)
pst所指向的那个结构体变量中的age 这个成员
pst -> age 只是代表的是 struct Student 中的 age 这个小成员