结构体指针:当一个指针变量用来指向一个结构体变量时。 1.结构体指针变量的值是所指向的结构体变量的起始地址。 2.通过结构体指针可以访问结构体变量。 定义形式:结构体名 *结构体指针变量(也可在定义结构体时,同时定义这个结构体变量) 注: 1.结构体指针变量必须要赋值后才能使用。 2.赋值是把结构体变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。 如:若p是被定义为student类型的结构体指针变量,boy是被定义为student类型的结构体变量, 则:p=&boy是正确的,p=&student是错误的。 应用结构体指针变量指向的结构体变量成员方法: 1.指针名->成员名 2.(*指针名).成员名 (*p).score 与 p->score 是等价的。
代码:
# include <stdio.h> # include <string.h> #pragma warning(disable:4996) struct AGE { int year; int month; int day; }; struct STUDENT { char name[20]; //姓名 int num; //学号 struct AGE birthday; //生日 float score; //分数 }; int main(void) { struct STUDENT student1; /*用struct STUDENT结构体类型定义结构体变量student1*/ struct STUDENT* p = NULL; /*定义一个指向struct STUDENT结构体类型的指针变量p*/ p = &student1; /*p指向结构体变量student1的首地址, 即第一个成员的地址*/ strcpy((*p).name, "小明"); //(*p).name等价于student1.name (*p).birthday.year = 1989; (*p).birthday.month = 3; (*p).birthday.day = 29; (*p).num = 1207041; (*p).score = 100; printf("name : %s\n", (*p).name); //(*p).name不能写成p printf("birthday : %d-%d-%d\n", p->birthday.year, (*p).birthday.month, (*p).birthday.day); printf("num : %d\n", (*p).num); printf("score : %.1f\n", (*p).score); return 0; }
结果:
name : 小明 birthday : 1989-3-29 num : 1207041 score : 100.0
结构体指针
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 概 述 如果我们只是 struct time *p; 我们只是创建了一个指针,只会在栈中分配指针大小的空间来存放地...