结构体指针:指向结构体的指针。是非常普遍存在的使用方式,必须掌握!
上车:
typedef struct data //typedef定义结构体,别名为DATA
{
int aa;
int bb;
int cc;
int dd;
}DATA;
以下temp1, temp2的赋值操作都可行,temp1是指针直接指向结构体内部变量,temp2是指针转换为结构体后,再使用结构体变量访问方式。两种方式都编译过,放心使用。
此函数相当于定义一个类型为DATA *型的指针DATAStruct,指向结构体sum1的首地址,即可分解为:
DATA * DATAStruct;
DATAStruct = &sum1;
此时,DATAStruct指向了sum1结构体首地址
int DATA_init(DATA *DATAStruct) //结构体实现,使用指针指向结构体{
int temp1, temp2;
temp1 = DATAStruct->aa + DATAStruct->bb + DATAStruct->cc + DATAStruct->dd;
temp2 = (*DATAStruct).aa + (*DATAStruct).bb + (*DATAStruct).cc - (*DATAStruct).dd;
return temp1 + temp2;
}
int main(void)
{
int temp1;
DATA sum1; //定义DATA类型的sum1变量
sum1.aa = 10; //初始化结构体变量
sum1.bb = 20;
sum1.cc = 30;
sum1.dd = 40;
temp1 = DATA_init(&sum1); //调用结构体指针函数
printf("temp1 = %d\r\n", temp1); //打印输出temp1,输出结果为120
return 0;
}
所有信息都在注释里,如有问题,欢迎指正!