C语言结构体简单入门讲解

C语言结构体简单入门讲解

什么是结构体?

结构体是C语言中的复合数据类型之一,它允许我们将不同类型的数据组合在一起,形成一个新的自定义数据类型。

结构体的定义方式为:

struct 结构体名 {
    结构体成员1;
    结构体成员2;
    ...... 
};

结构体的使用

结构体的声明

声明一个结构体和声明一个变量类似,都需要指定数据类型和变量名。结构体的声明可以在函数的内部或外部进行,但是需要注意作用域的问题。

struct Student {
    char name[20];
    int age;
    float score;
};

struct Student student1, student2;

结构体的初始化

结构体的初始化方法与数组相似,也可以使用大括号 {} 和逗号 , 将结构体的各个成员进行初始化。

struct Student student1 = {"Tom", 18, 85.5};
struct Student student2 = {.name="Jerry", .score=90.0, .age=19};

结构体的访问

结构体的成员可以使用成员运算符 . 来访问。

printf("姓名:%s,年龄:%d,分数:%f", student1.name, student1.age, student1.score);

结构体的指针

结构体也可以使用指针,可以通过指针来访问结构体成员。

struct Student *p = &student1;
printf("姓名:%s,年龄:%d,分数:%f", p->name, p->age, p->score);

结构体的示例

结构体存储多个学生信息

#include <stdio.h>
#include <string.h>

struct Student {
    char name[20];
    int age;
    float score;
};

int main() {
    struct Student students[10] = {
        {"Tom", 18, 85.5},
        {"Jerry", 19, 90.0},
        {"Alice", 20, 92.5},
        {"Bob", 21, 88.0},
        {"Mike", 22, 89.5},
        {"Lucy", 23, 87.5},
        {"John", 24, 86.0},
        {"Mary", 25, 91.5},
        {"David", 19, 89.0},
        {"Jane", 20, 93.0}
    };

    for (int i = 0; i < 10; i++) {
        printf("姓名:%s,年龄:%d,分数:%f\n", students[i].name, students[i].age, students[i].score);
    }

    return 0;
}

结构体存储学生信息并计算平均分和最高分

#include <stdio.h>
#include <string.h>

struct Student {
    char name[20];
    int age;
    float score;
};

int main() {
    struct Student students[10] = {
        {"Tom", 18, 85.5},
        {"Jerry", 19, 90.0},
        {"Alice", 20, 92.5},
        {"Bob", 21, 88.0},
        {"Mike", 22, 89.5},
        {"Lucy", 23, 87.5},
        {"John", 24, 86.0},
        {"Mary", 25, 91.5},
        {"David", 19, 89.0},
        {"Jane", 20, 93.0}
    };

    float total_score = 0.0;
    float average_score = 0.0;
    float max_score = students[0].score;

    for (int i = 0; i < 10; i++) {
        total_score += students[i].score;

        if (students[i].score > max_score) {
            max_score = students[i].score;
        }
    }

    average_score = total_score / 10;

    printf("平均分:%f,最高分:%f\n", average_score, max_score);

    return 0;
}

以上就是C语言结构体的简单入门讲解。通过学习结构体,我们可以更加灵活地处理数据,提高我们程序设计的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言结构体简单入门讲解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 易语言数据库操作之“取字段名”命令详解

    易语言数据库操作之“取字段名”命令详解 在易语言中,我们可以使用“取字段名”命令对数据库中的表格进行操作。这个命令有很多的应用场景,例如获取表格字段名、获取表格字段数据类型、获取表格字段备注等等。 语法格式 取字段名(表格名, 字段索引, 参数标识) 其中,表格名指的是需要查询的表格名称,字段索引指的是需要查询的表格字段的索引值,参数标识则是可选参数,表示要…

    other 2023年6月25日
    00
  • ios导航栏的使用方法

    iOS导航栏的使用方法 在iOS应用程序开发过程中,导航栏是一个非常重要的组件,它主要用于实现应用程序的层级页面结构以及页面之间的导航跳转。本文将介绍如何在iOS中使用导航栏。 创建导航栏 首先,我们需要在ViewController的界面中创建一个导航栏。这可以通过以下两种方式实现: 使用Storyboard创建 在Storyboard中,可以通过拖动Na…

    其他 2023年3月29日
    00
  • JAVA实现SOCKET多客户端通信的案例

    首先,我们需要明确一下什么是Socket,Socket是一种抽象的概念,是对地址和端口的封装。在计算机网络中,Socket指的就是TCP/IP协议网络编程接口,它是应用层与传输层之间的连接门户,使得网络应用程序能够访问传输层协议,进行数据传输。本文将详细讲解如何用Java实现Socket多客户端通信的案例。 1. 服务器端的实现 1.1 创建ServerSo…

    other 2023年6月25日
    00
  • Python单链表原理与实现方法详解

    Python单链表原理与实现方法详解 什么是单链表 在计算机科学中,链表(Linked list)是一种常见的数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。由于不必须按顺序存储,链表在插入的时候可以达到 O(1)O(1) 的复杂度,但是查找一个节点或者访问特定编号的节点则需要 O…

    other 2023年6月27日
    00
  • java 用递归获取一个目录下的所有文件路径的小例子

    下面我将详细讲解如何在Java中使用递归来获取一个目录下的所有文件路径。 首先,我们需要明确一下递归的概念。递归是一种常用于重复操作相似任务的方法,在函数中调用自身实现循环的效果。对于获取目录下的所有文件路径,我们可以使用递归来实现。具体步骤如下: 1. 准备工作 我们需要一个文件夹来作为例子,如下图所示: ├── dir │ ├── file1.txt │…

    other 2023年6月27日
    00
  • springboot vue测试列表递归查询子节点下的接口功能实现

    让我详细讲解一下“springboot vue测试列表递归查询子节点下的接口功能实现”的完整攻略。 简介 这里的需求是实现一个树形结构的列表,需要递归查询子节点及子节点的子节点,同时进行测试和使用Vue作为前端开发框架,Spring Boot作为后端开发框架。 实现步骤 1. 数据库设计 首先,需要设计数据库。我们可以创建一个树形结构的表,用来保存节点之间的…

    other 2023年6月27日
    00
  • 【WPF】无边框窗体

    WPF无边框窗体的完整攻略 WPF无边框窗体是一种常见的UI设计,它可以让应用程序看起来更加现代化和美观。在本文中,我们将为您提供一份详细的WPF无边框窗体的完整攻略,包括无边框窗体的基本概念、使用场景、实现方法和两个示例说明。 无边框窗体的基本概念 无边框窗体是一种特殊的WPF窗体,它没有标准的标题栏、边框和按钮。无边框窗体通常用于以下场景: 需要自定义窗…

    other 2023年5月5日
    00
  • thinkphp5.1 文件引入路径问题及注意事项

    ThinkPHP 5.1 文件引入路径问题及注意事项攻略 在使用 ThinkPHP 5.1 进行开发时,文件引入路径问题是一个常见的挑战。本攻略将详细讲解如何正确处理文件引入路径,并提供两个示例说明。 1. 理解 ThinkPHP 5.1 的文件结构 在开始解决文件引入路径问题之前,首先需要了解 ThinkPHP 5.1 的文件结构。通常,ThinkPHP …

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部