结构体

作者: silasjs | 来源:发表于2019-01-28 17:26 被阅读0次

[toc]

结构体的定义方式

  1. 先定义结构体类型,再定义结构体变量
struct Person {
    int age;
    char *name;
    double height;
};
struct Person person;
  1. 定义结构体类型的同时定义结构体变量
struct Person {
    int age;
    char *name;
    double height;
} person;
person.age = 30;
printf("age = %i\n", person.age);

struct Person person;
person.name = "slj";
printf("name = %s\n", person.name);
  1. 定义结构体类型的同时定义结构体变量,并且省略结构体名称
    1. 如果在定义结构体类型的同事定义结构体变量,那么可以省略结构体类型名称
    2. 弊端:由于结构体类型没有名称,所以以后就不能使用该结构体类型
    3. 优点:如果结构体类型只需要使用一次,那么可以使用该方式
struct {
    int age;
    char *name;
    double height;
} person;
person.age = 31;
printf("age = %i\n", person.age);

结构体的内存存储细节

  1. 内存寻址从大到小
  2. 存储的构造体元素从小到大
  3. 数组的地址就是数组首元素的地址
  4. 结构体的地址也是结构体的首元素地址
  5. 数组的名称也是数组的地址
  6. ==结构体的名称并不是结构体的地址==

注意:定义结构体类型并不会分配存储空间,只有定义结构体变量才会真正的分配内存空间

  • 结构体分配存储空间的原则:
    1. 找到结构体类型中占用存储空间最大的属性,以后就按照该属性占用的存储空间的倍数来分配
    2. 会从第0个属性开始分配存储,如果存储空间不够就会重新分配,如果存储空间还有剩余,那么就会把后面的属性的数据存储到剩余的空间中
    3. 会从第0个属性开始分配存储,如果存储空间不够就会重新分配,并且会将当前属性的值直接存储到新分配的存储空间中,以前剩余的存储空间就不要了

相关文章

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

  • C语言 第九章 结构体

    [TOC] 第九章结构体 结构体的定义 结构体定义2 指针表示结构体

网友评论

      本文标题:结构体

      本文链接:https://www.haomeiwen.com/subject/futzjqtx.html