• 结构体 + typedef


    简单结构体

    struct student{

      char name[20];   //可以用scanf或者直接赋值    

        *如果用char *name  在用scanf时没有内存接收

      long id;

      int age;

      float height;

    };

    结构体中只能声明变量不能赋初值。

    struck student zhangsan;

    struck student zhangsan = {"xiaowang",2000002,20,180.5};

    结构体的访问用".":xiaowang.name


    typedef

    typedef  struct student{

      char name[20];   //不能用char *name  在用scanf时没有内存接收

      long id;

      int age;

      float height;

    }Student;     // typedef给一个存在的类型取一个别名

    Student zhangsan;

    Student zhangsan = {"xiaowang",2000002,20,180.5};

    如果不加typedef:

    struct student{

      char name[20];   //不能用char *name  在用scanf时没有内存接收

      long id;

      int age;

      float height;

    }Student;//Student 是一个变量了


    结构体指针

    Student *s;

    如果*name是字符串      s->name = "xiaowang";

    如果name[]是数组接收  strcpy(s->name,"xiaowang");

    s->age = 23;

    Student *s[5]; //每一块都存着结构体的地址

    Student xw ={"xiaowang",2345,23,164.3};

    s[0] =&xw;  //结构体指针数组里面的每一个都存着地址,如果不给他内存地址,它的值就为空,不可直接赋值。

    s[0]->age = 20;


    结构体数组

    Student array[5] ={};

    strcpy(array[0].name,"xiaowang");

    array[0].age = 23;


    计算结构体内存空间

      如果结构体内部拥有多种数据类型,那么以占据内存字节数最高的类型对齐

    typedef struct{

        char *name;

        int age;

    }Person;//16

    char * 占据8个字节, int 占据4个字节

    所以age变量自动向name对齐。整个占据16个字节

     typedef struct{

        char name;

        int age;

    }Person;//8

     typedef struct{

        char name[2];

        int age;

    }Person;//8

     typedef struct{

        char name[6];

        int age;

    }Person;//12

  • 相关阅读:
    Tensorflow实现LSTM识别MINIST
    linux误删除恢复
    python使用工具简介介绍
    一个画ROC曲线的封装包
    Anaconda基本使用
    对于进程没杀死占用内存和cpu行为的方法
    Gluon
    原博客地址
    训练词向量
    TPU尝试
  • 原文地址:https://www.cnblogs.com/huoran1120/p/5039231.html
Copyright © 2020-2023  润新知