zoukankan      html  css  js  c++  java
  • 结构体指针和结构体嵌套

    结构体指针

    概念:

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

    访问成员值:

    #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
    ",(*p).name);
        
        //直接访问成员值
        
        printf("年龄是%d
    ",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
    ",cqx.name,cqx.age);//
        
        printf("laopo名字是%s,年龄是%d
    ",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
    ",stu1.name,stu1.age,stu1.score,stu1.birthday.year,stu1.birthday.month,stu1.birthday.day);
        return 0;
    }
    View Code
  • 相关阅读:
    SpringBoot启动配置原理
    SpringBoot和web开发
    SpringBoot和日志
    SpringBoot入门
    Docker仓库
    Docker Swarm
    Docker相关概念
    Docker服务编排
    Dockerfile
    Docker应用部署
  • 原文地址:https://www.cnblogs.com/chenqingxiao/p/4364404.html
Copyright © 2011-2022 走看看