结构体指针和结构体嵌套

结构体指针

概念:

  当一个指针指向一个结构体变量的时候,就叫做结构体指针,结构体指针指向结构体变量的首地址

访问成员值:

#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;
}
View Code

 结构体嵌套,可以嵌套其他类型的结构体变量,不能嵌套自己类型的结构体变量,但是可以嵌套自己类型的结构体指针:

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;
}
View Code

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;
}
View Code

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;
}
View Code

 

posted @ 2015-03-24 23:43  空空的空空  阅读(2330)  评论(0编辑  收藏  举报

页脚