一级结构体指针
(*stuPoint).age 等价于 stuPoint->age
#include <stdio.h>
#include <stdlib.h>
/**
结构体指针
*/
//定义结构体
struct student{
int age; //4个字节
float score;//4个字节
char sex; //1个字节
};
main(){
//使用结构体(使用{}对结构体进行赋值)
struct student stu = {18,98.9,'W'};
//结构体指针
struct student* point = &stu;
//结构体指针 取值运算
//*point取到结构体
//(*point).age 等价于 point->age
printf("(*point).age =%d\n",(*point).age);
printf("point->age =%d\n",point->age);
printf("point->score =%.1f\n",point->score);
printf("point->sex =%c\n",point->sex);
//赋值运算
point->age = 20;
point->score = 100;
point->sex = 'M';
printf("point->age =%d\n",point->age);
printf("point->score =%.1f\n",point->score);
printf("point->sex =%c\n",point->sex);
system("pause");
}
运行结果:
二级结构体指针
(**point).age 等价于 (*point)->age
#include <stdio.h>
#include <stdlib.h>
/**
结构体指针
*/
//定义结构体
struct student{
int age; //4个字节
float score;//4个字节
char sex; //1个字节
};
main(){
//使用结构体(使用{}对结构体进行赋值)
struct student stu = {18,98.9,'W'};
//结构体指针
struct student* point = &stu;
//二级结构体指针
struct student** point2 = &point;
//一级结构体指针 取值运算
//*point:为取到结构体,还没到参数
//(*point).age 等价于 point->age
printf("(*point).age =%d\n",(*point).age);
printf("point->age =%d\n",point->age);
printf("point->score =%.1f\n",point->score);
printf("point->sex =%c\n",point->sex);
printf("\n");
//一级结构体赋值运算
point->age = 20;
point->score = 100;
point->sex = 'M';
printf("point->age =%d\n",point->age);
printf("point->score =%.1f\n",point->score);
printf("point->sex =%c\n",point->sex);
printf("\n");
//二级结构体指针取值 (*point).age 等价于 point->age 所以 (**point).age 等价于 (*point)->age
//(**point).age 等价于 (*point)->age 可以这么理解 (**point).age 变为 (*point)->age 时去掉了(**point)里的一颗星变为->符号代表了 (所以用(*point)->age表示)
printf("(**point2).age =%d\n",(**point2).age);
printf("(*point2)->age =%d\n",(*point2)->age);
printf("\n");
//二级结构体指针赋值
(**point2).age = 2000;
printf("(**point2).age =%d\n",(**point2).age);
printf("(*point2)->age =%d\n",(*point2)->age);
printf("\n");
(*point2)->age = 18;
printf("(**point2).age =%d\n",(**point2).age);
printf("(*point2)->age =%d\n",(*point2)->age);
printf("\n");
system("pause");
}
运行结果: