美文网首页
结构体探秘

结构体探秘

作者: iMikasa_ | 来源:发表于2021-11-21 15:51 被阅读0次

设计程序时,最重要的步骤之一是选择表示数据的方法。在许多情况下,简单变量甚至数组还不够。为此,c提供了结构变量提高表示数据的能力。

结构声明

结构声明:描述了一个结构的组织布局,如下

struct book{
    char title[10];
    char author[10];
    float value;
}

该声明未创建实际的数据实体,仅仅只是描述了数据应该是如何组成的,可以把他想象一个模板,他是告诉你结构体是如何存储数据的。

定义结构变量

刚才说的是结构声明,是告诉编译器如何表示数据,但是他并未让编译器为数据分配内存空间,我们现在就可以根据我们之前声明的结构体声明我们的结构,如下

struct book library;

编译器执行这行代码,便创建了一个结构变量,变量名是libary,编译器使用之前我们声明的结构体book为模板为该变量分配空间,当然我们定义结构变量的时候,可以通过book模板创建多个结构体变量,从本质上看,book结构声明创建了一个名为struct book的新数据类型。
当然,结构体的声明和结构变量的声明可以写在一块,如下

strcut book{
    char title[10];
    char author[10];
    float value;
}library; 

初始化结构变量

如下

struct book library ={
        "MY BOOK",
        "MIKASA"
        1000.12
    };

访问结构成员

什么是结构成员,结构成员就是我们声明结构体的时候中括号内每一个变量,我们称为结构体的成员或者叫属性,如果我现在已经向上面一样初始化了结构变量,那如何获取或者修改其值呢?
如下程序

#include <stdio.h>
struct book{
    char title[10];
    char author[10];
    float value;
};
int main(int argc, char const *argv[])
{
    struct book library ={
        "MY BOOK",
        "MIKASA",
        1000.12
    };
    printf("%s\n",library.title);
    library.value = 999.99;
    printf("%.2f\n",library.value);   
    return 0;  
}

嵌套结构

就是结构中的属性可以是另一个结构,此部分不做赘述。

指向结构的指针

声明和初始化结构指针,以及使用指针访问成员

如下程序

#include <stdio.h>

struct book{
    char title[10];
    char author[10];
    float value;
};

int main(int argc, char const *argv[])
{
    struct book library ={
        "MY BOOK",
        "MIKASA",
        1000.12
    };
    struct book * pbook = &library;
    printf("%p\n",&library);
    printf("%p\n",pbook);   
    printf("%s\n",(*pbook).title);
    printf("%s\n",pbook->author);
    return 0;
}
image.png

相关文章

  • 结构体探秘

    设计程序时,最重要的步骤之一是选择表示数据的方法。在许多情况下,简单变量甚至数组还不够。为此,c提供了结构变量提高...

  • springboot工作原理

    spring boot 工作原理 @SpringBootApplication注解背后的三体结构探秘 @confi...

  • 探秘Runtime - 剖析Runtime结构体

    该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.c...

  • 酒中论熵,知熵知酒;从“熵论”看黄酒中的能量与生命理念的交织

    数理生命观中的“熵论” 以下内容摘自韦岗博士《生命探秘:信息、能量和气血网》 1.生命体的耗散结构状态离最大熵越远...

  • 结构体

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

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

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

  • C结构体和链表

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

  • 结构体

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

  • 结构体数组的定义

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

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

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

网友评论

      本文标题:结构体探秘

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