【结构体】C语言结构体使用教程

简介: 【结构体】C语言结构体使用教程

1.结构体简介

       在日常使用中我们很多时候需要处理大量数据,为了更加规整数据,编程语言为我们提供了结构体,他可以让我们处理数据时候更加规整,逻辑更加清晰。比如我们的学生管理系统,库存管理系统........这里都可以使用我们的结构体来让我们的数据看起来更加整齐。

       结构体本质上还是一个变量,我们建立的结构体就是一种数据结构。比如我们的学生管理系统,我们需要学号,姓名,成绩,等等属性,这时候我们就可以建立一个和学生有关的结构体来把这些变量放到结构体,来处理数据。会显得十分高效。

再具体开始之前,日常求个三联。写作不易,给读者老板跪了。QAQ

2.结构体的含义

       我们先来理解一下什么是结构体,不需要看懂代码,我们先捋清我们的逻辑关系

struct student{
    int id;
    char name[100];
    int num[2];
}stu[2];

       这是一个名字叫做student的结构体,包含了id,name,num这三个元素,其中id为整型,然后name是一个字符串类型的数组,num是一个整型数组。最后的stu[2]就是我们的结构体数组

       这里来类比下excl表格来让各位能更加捋清楚关系。众所周知,数组可以理解成表格所以我绘制如下表格来帮助给理解

student

结构体数组 id name num[ 0 ] num[ 1 ]
stu[0] 1 张三 99 80
stu[1] 2 李四 98 70

       通过上表我们可以清楚的看出,我们的结构体数组是专门负责控制我们的数据行,而我们的结构体内的各个数据在应用上都和普通的应用是相同的。相信聪明的你已经看出了端倪,我们实际上就是构建了一个名叫student的表然后通过结构体数组来调整我们的数据行。你读到这里恭喜你已经基本了解结构体了,这也是最关键的一步。放个初音镇楼QWQ

3.结构体的语法

       现在你已经有了对结构体的逻辑关系了,下面就要学会去使用它了。

3.1创建一个简单结构体

       在创建一个结构体时,我们使用到关键字struct来进行创建其格式如下:

struct 结构体名字{
   结构体对象
}结构体数组;

各位要注意的是在结构体的最后一个花括号需要有分号结尾,这样才是整个语句闭合。

这里我们使用该方法创建一个结构体以便后期讲解使用代码如下:

struct student{
    int id;
    char name[100];
    int num[4];
}stu[2];

3.2给结构体赋值

       各位谨记一句话,结构体就是变量。所以在使用时候和变量没有区别。这里我没有涉及在程序内部给结构体赋值,我直接采用了传参的方法来对结构体进行赋值。

        结构体变量的调用格式为:结构体数组.结构体对象。 既然涉及到了数组,我们自然而然的想到了for循环,这里是一段伪代码,并未考虑到结构体对象存在数组的形式。

   

for ( i = 0; i < count; i++)    //只对这一行数据进行遍历
{
        scanf("%d",&stu[i].id);
}

       没错就是这么简单,这个例子是针对结构体内部为常量的情况进行赋值的

       接下来这个例子就是对我们结构体内部存在数组的情况进行赋值。

       显而易见,我们使用两个for循环,分别用来控制我们的结构体数组和我们的结构体对象的数组,这里的应用和我们的二维数组是类似的。

for ( i = 0; i < count; i++)        //控制我们的结构体数组
{
    for (size_t n = 0; n < count; n++)//控制我们的内部数组
    {
        scanf("%d",&stu[i].id[n]);
    }
}

        这里进行一个小节:结构体数组用于控制我们的具体数据行标,我们真正存的东西是在我们的结构体内部,而最开始的那个,仅仅只是我们起了一个名字罢了,对我们的程序执行不会产生影响。

3.3结构体的打印

       正所谓输出与输入相对,我们在打印结构体数据时候只需要把函数更换成printf即可完成,这里为了节省篇幅就不过多赘述,如果有问题可以在评论区提问。

4.结构体扩展内容

       有人可能会好奇不同的结构体数组是否是指同一组数据呢?这里我先卖个关子,先看笔者的实验数据。

       实验结果表明,我们重现创建的结构体数组s_t我们对其中元素进行赋值并没有影响到我们的结构体数组中的stu数组。由此可见,不同结构体数组是各自独立的,结构体仅仅是一个模板。

5.结尾彩蛋

       看到这里相信各位已经能基本使用结构体了,笔者这里为大家准备了一个和结构体有关的小题目供大家练练手。题目解析的传送门======》》》》奖学金之结构体排序

呼两个小时终于写完了,都看到结尾了,求个一键三连不过分吧QWQ

目录
相关文章
|
3天前
|
编译器 测试技术 C语言
【C语言】:自定义类型:结构体的使用及其内存对齐
【C语言】:自定义类型:结构体的使用及其内存对齐
19 7
|
1天前
|
网络协议 编译器 Linux
结构体(C语言)
结构体(C语言)
|
3天前
|
存储 机器学习/深度学习 编译器
C语言基础简单教程
C语言基础简单教程
|
4天前
|
IDE 编译器 开发工具
C语言教程:如何进行环境搭建
C语言教程:如何进行环境搭建
|
4天前
|
搜索推荐 编译器 C语言
C语言的简单教程
摘要: 了解C语言中的注释,包括//单行和/*多行*/注释,注意不要嵌套。使用快捷键Ctrl + K, Ctrl + C/U处理注释。C语言的关键字如&#39;int&#39;和&#39;return&#39;有特定含义,通常小写且高亮显示。常量是不可变的,分为不同类型。练习涉及识别不同类型的常量,如整型、实型和字符型。使用printf通过占位符输出常量,例如`printf(&quot;%d&quot;, 10)`。作业包括根据占位符输出个性化信息,如学校名字、高考分数和女朋友的详细信息,并掌握在不同情况下使用\n进行换行。
|
12天前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
29 7
|
2天前
|
编译器 C语言 C++
【海贼王编程冒险 - C语言海上篇】自定义类型:结构体,枚举,联合怎样定义?如何使用?
【海贼王编程冒险 - C语言海上篇】自定义类型:结构体,枚举,联合怎样定义?如何使用?
5 0
|
2天前
|
存储 编译器 Linux
【c语言】详解结构体
【c语言】详解结构体
5 0
|
6天前
|
C语言
C语言---自定义类型:结构体(4)
C语言---自定义类型:结构体
|
6天前
|
编译器 C语言
C语言---自定义类型:结构体(3)
C语言---自定义类型:结构体