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

    /*
     
        结构体的嵌套:
     
            结构体定义中,结构体的成员又是另外一个结构体变量
     
        结构体的嵌套的注意事项:
     
            1)结构体定义中可以嵌套其他结构体类型的变量
      
               不可以嵌套自己这个类型的变量
     
               struct Date{
     
                   int month;
                   int year;
                   int day;
     
               };
     
               struct Student {
     
                   char *name;
                   int age;
                   float score;
                   struct Student stu; //错误的
     
               }
     
     
            2)可以嵌套自己类型的指针
     
     
     */
    
    
    #include <stdio.h>
    //定义了一个时间的结构体
    struct Time{
        
        int hour;
        int min;
        int sec;
        
    };
    
    //定义一个Date的结构体
    struct Date{
        
        int year;
        int month;
        int day;
        //嵌套Time的结构体
        struct Time time;
        
    };
    
    //定义了一个学生的结构体
    struct Student {
        
        char *name;
        int age;
        float score;
        struct Date birthday;
        //struct Student stu; //错误的
        //struct Student *stu;  //正确的
        
    };
    
    int main(int argc, const char * argv[]) {
        
      
        
        //1、嵌套的结构体如何进行初始化
        struct Student stu1={"张三丰",28,59.99f,{1200,2,14,{12,12,12}}};  //定义了一个结构体变量
        
        //2、嵌套的结构体如何进行访问
        printf("姓名:%s,年龄:%d(生日:%d-%02d-%02d),成绩:%.2f
    ",stu1.name,stu1.age,stu1.birthday.year,stu1.birthday.month,stu1.birthday.day,stu1.score);
        
        //访问时间
         printf("姓名:%s,年龄:%d(生日:%d-%02d-%02d %02d:%02d:%02d),成绩:%.2f
    ",stu1.name,stu1.age,stu1.birthday.year,stu1.birthday.month,stu1.birthday.day,stu1.birthday.time.hour,stu1.birthday.time.min,stu1.birthday.time.sec,stu1.score);
        
        
        //3、结构体嵌套自身的指针
        struct Person {
        
            char *name;
            int age;
            //嵌套自己类型的指针
            struct Person *child;
        
        };
        
        //结构体嵌套自身指针的,初始化
        //定义kim
        struct Person kim={"kim",8,NULL};
        
        //struct Person *child = &kim;
        struct Person p1={"林志颖",38,&kim};
        
        //结构体嵌套自身指针的,访问
        printf("%s 的儿子是:%s,儿子的年龄:%d
    ",p1.name,p1.child->name,p1.child->age);
        
        return 0;
    }
    
    //
    //  main.c
    //  08-结构体变量及成员作为函数参数
    //
    //  Created by apple on 15/1/11.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    struct Car{
      
        int lunzi;
        int speed;
    
    };
    
    void xiuche(int n){
    
        n = 2;
    
    }
    
    //用结构体变量作为函数的参数
    void xiuche1(struct Car c1){
        
        c1.lunzi = 2;
        
    }
    
    int main(int argc, const char * argv[]) {
        
        //定义一个结构体变量
        struct Car car1={4,200};
        //car1.lunzi 结构体变量成员值     4
        //1、用结构体变量的成员值作为函数的参数,实质是值传递
        xiuche(car1.lunzi);
        
        //2、用结构体变量作为函数的参数
        //实质上还是值传递
        xiuche1(car1);
        
        printf("%d
    ",car1.lunzi);   //4
        
        return 0;
    }
    
    //
    //  main.c
    //  09-结构指针作为函数的参数
    //
    //  Created by apple on 15/1/11.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    struct Car{
        
        int lunzi;
        int speed;
        
    };
    
    /**
     *  结构体指针作为函数的参数
     *
     *  @param c1 是一个结构体指针
     */
    void xiuche2(struct Car *c1){
    
        c1->lunzi = 2;
    
    }
    
    int main(int argc, const char * argv[]) {
        
        //定义一个结构体变量
        struct Car car1={4,200};
        
        //注意:用结构体变量的地址传递给函数
        //     也可以理解为用结构体指针作为函数的参数
        
        //     实质:是地址传递
        xiuche2(&car1);
        
        printf("%d
    ",car1.lunzi);   //2
    
        return 0;
    }
    
  • 相关阅读:
    MD5算法MFC实现
    asp.net2.0新特点
    file format
    C专家编程第二章学习笔记
    Bye Czech golden generation
    中间层
    学完谭C之后
    C语言学习之路
    荀子劝学篇
    C语言常用转义字符表
  • 原文地址:https://www.cnblogs.com/aiti/p/4678387.html
Copyright © 2011-2022 走看看