结构体指针
概念:
当一个指针指向一个结构体变量的时候,就叫做结构体指针,结构体指针指向结构体变量的首地址
访问成员值:
#include <stdio.h> int main(int argc, const char * argv[]) { struct Students//定义结构体 { int age; char *name; float score; }; struct Students stu1={23,"陈擎霄",99.0};//初始化一个结构体变量 struct Students *p=&stu1; //间接访问成员值 printf("名字是%s\n",(*p).name); //直接访问成员值 printf("年龄是%d\n",p->age); //我和你 心连心 共住九克拉 //为高薪 千里行 相会在传智 return 0; }
结构体嵌套,可以嵌套其他类型的结构体变量,不能嵌套自己类型的结构体变量,但是可以嵌套自己类型的结构体指针:
1.结构体嵌套其他类型结构体:
#include <stdio.h> int main(int argc, const char * argv[]) { //被嵌套的结构体必须写在上面 struct Date//日期的结构体, { int day; int month; int year; }; struct Student//学生的结构体 { int age; char name[20]; float score; struct Date birthday;//此处嵌套一个日期的结构体 }; return 0; }
2.结构体嵌套自己类型的指针:
#include <stdio.h> int main(int args,const char * argv[]) { struct Person//结构体人 { int age; char *name; struct Person *wife;//嵌套自己类型的指针 }; struct Person wx={24,"王茜",NULL};//定义一个结构体 struct Person cqx={23,"陈擎霄",&wx};//把wx的地址给cqx第三个成员 printf("laogong名字是%s,年龄是%d\n",cqx.name,cqx.age);// printf("laopo名字是%s,年龄是%d\n",cqx.wife->name,(*(cqx.wife)).age);//用指针访问 return 0; }
3.访问嵌套的结构体成员值:
#include <stdio.h> int main(int argc, const char * argv[]) { //被嵌套的结构体必须写在上面 struct Date//日期的结构体, { int year; int month; int day; }; struct Student//学生的结构体 { int age; char name[20]; float score; struct Date birthday;//此处嵌套一个日期的结构体 }; struct Student stu1={23,"张三",99.23,{1992,02,01}}; printf("姓名是%s,年龄是%d,分数是%.1f,生日是%d-%d-%d\n",stu1.name,stu1.age,stu1.score,stu1.birthday.year,stu1.birthday.month,stu1.birthday.day); return 0; }
原文:http://www.cnblogs.com/chenqingxiao/p/4364404.html