C语言指向结构体变量的指针在C语言中,指向结构体对象的指针变量既能够指向结构体变量,也可指向结构体数组中的元素。指针变量的基类型必须与结构体变量的类型相同。C语言中容许
(*p).num用p->num来代替
->表明一个箭头
p->num表示p所指向的结构体变量中的num成员
C语言指向结构体数组的指针(++p)->num先使p自加1,而后获得p指向的元素中的num成员值。(p++)->num先求的p->num的值,而后再使p自加1。
C语言用结构体变量和结构体变量的指针做函数参数用结构体变量的成员做参数,用法和用普通变量做实参是同样的,属于“值传递”方式。应当注意实参与形参的类型保持一致。用结构体变量做实参。用结构体变量做实参时,采起的也是“值传递”的方式,将结构体变量所占的内存单元的内容所有按顺序传递给形参,形参也必须是同类型的结构体变量。用指向结构体变量(或数组元素)的指针做实参,将结构体变量的地址传给形参。
C语言使用结构体指针输出生日#include<stdio.h> #include<string.h> struct Age { int year; int month; int day; }; struct Student { char name[20]; //姓名 struct Age birthday; //生日 }; int main(void) { struct Student student1; //定义结构体变量student1 struct Student *point = NULL; //定义一个指向Student结构体类型的指针变量point point = &student1; //point指向结构体变量student1的首地址, 即第一个成员的地址 strcpy((*point ).name, "闫小林"); //(*point).name等价于student1.name (*point ).birthday.year = 1989; (*point ).birthday.month = 4; (*point ).birthday.day = 29; printf("姓名:%s\n", (*point ).name); //(*point).name不能写成point printf("生日:%d-%d-%d\n", (*point).birthday.year, (*point).birthday.month, (*point).birthday.day); return 0; }编译运行结果:姓名:闫小林 生日:1989-4-29 -------------------------------- Process exited after 0.04992 seconds with return value 0 请按任意键继续. . .