• 结构体


    #include <stdio.h>
    #include <stdlib.h>
    struct dog{
      int age;
      char name[20];
      char favorite[20];
     };
    //定义结构体类型的同时,取好别名
    typedef struct person{
     int age;
     char name[20];
     struct dog pet;
    } person;
    struct book{
     //页数
     int pages;
     //价格
     float prices;
     //结构体成员又是一个结构体变量
     struct person author;
    };
    void first(){
     puts("----------结构体----------");
     //自定义一种数据类型,类型名字叫做 struct person,
     //这种类型里面有两个成员,一个age和一个name

     //struct book就是一种数据类型,相当于int。a是变量名
     struct book a = {252,42.5};//初始化内容,类似数组
     struct person b = {28,"Lisa"};//初始化部分内容,类似数组
     struct dog c = {2,"大黄","吃骨头"};
     b.pet = c;//或者 a.author.pet = c;
     a.author = b;//给结构体成员赋值
     printf("页数:%d 价格:%f 作者:%s,作者的宠物的爱好是:%s",
       a.pages,a.prices,a.author.name,
       a.author.pet.favorite);
    }

    void second(){
     int a = 10;
     int b = a;
     a = 30;
     printf("b = %d ",b);

     struct person lisa = {18,"lisa"};
     struct book c_language= {256,52.5};
     c_language.author = lisa;
     lisa.age = 20;
     printf("lisa.age = %d ",c_language.author.age);
    }
    /*结构体类型取别名的三种方式:

     * 1.定义结构体类型的同时,用typedef取别名
     * 2.定义结构体类型后,用typedef取别名
     * 3.使用宏定义define,给结构体类型定义宏实现字符替换效果
     * */
    //#define uchar unsigned char
    //类型定义,和上面使用宏定义实现的效果一样
    typedef unsigned char uchar;
    //#define person struct person
    //类型定义,和上面使用宏定义实现的效果一样
    //typedef struct person person;
    void three(){
     person a = {18,"lisa"};
     uchar b = 20;
    }


    /*测试:给下面的结构体取三个别名*/
    //第一种方式:使用宏定义
    #define A struct student
    //第二种方式:typedef类型定义
    typedef struct student B;
    //第三种方式:typedef类型定义,定义结构体的同时取别名
    typedef struct student{
     int age;
     char name[20];
    } C;
    void four(){
     A a = {18,"lisa"};
     B b = {19,"judy"};
     C c = {20,"andy"};
     printf("%d ",a.age);
     printf("%s ",a.name);
     printf("%d ",b.age);
     printf("%s ",b.name);
     printf("%d ",c.age);
     printf("%s ",c.name);
    }

    int main(void) {
      four();
      second();
     return EXIT_SUCCESS;
    }

  • 相关阅读:
    数据库----索引与补充
    数据库----知识点总结
    数据库----mysql 存储引擎,表介绍
    数据库----mysql表的约束和查询
    数据库----mysql 表的操作
    初识数据库
    并发编程----协程
    并发编程----同步,异步,阻塞,非阻塞,异步加回调机制,线程队列,event事件
    并发编程----GIL,进程池/线程池
    django中的模板渲染、模板继承、组件、插件
  • 原文地址:https://www.cnblogs.com/hzp0619/p/8660364.html
Copyright © 2020-2023  润新知