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\n",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\n",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\n",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\n",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\n",car1.lunzi);   //2

    return 0;
}

转载于:https://www.cnblogs.com/aiti/p/4678387.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值