C语言 结构体

下面就为大家详细讲解一下“C语言 结构体”的使用攻略。

C语言 结构体

结构体是C语言中一种自定义的数据类型,用于存储一组多个不同类型的数据,相比于数组在存储不同类型数据时的不足,结构体能够更加灵活地组合多个类型的数据。一个结构体被定义后,可以使用点运算符 . 来访问其各个成员。

结构体的定义

定义一个结构体需要使用 struct 关键字,结构体跟类型名之间需要有空格,然后紧跟着一对大括号,括号内就是结构体的成员。下面是一个学生结构体的定义:

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

上述结构体定义了一个 Student 结构体类型,其成员包括学号、姓名、年龄、成绩,分别使用 intcharintfloat 四种类型来表示。

结构体的初始化

结构体可以在定义的同时进行初始化,也可以在定义后通过赋值的方式进行初始化。下面是一个示例,可以看到结构体定义后,使用花括号 {} 包围起来的方式进行初始化:

struct Student tom = {1, "Tom", 20, 95.5};

结构体成员的初始化顺序是按照定义的顺序来的。

结构体的访问

使用点运算符 . 来访问结构体的各个成员。下面是一个示例:

printf("Tom's name is %s\n", tom.name);   // 访问结构体成员 name

结构体的传递

结构体可以作为函数参数进行传递。在传递结构体时,可以使用结构体本身作为参数类型,也可以使用结构体的指针类型作为参数类型。下面是一个示例代码:

#include <stdio.h>

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

void printStudent(struct Student stu) {
    printf("Student's ID: %d\n", stu.id);
    printf("Student's name: %s\n", stu.name);
    printf("Student's age: %d\n", stu.age);
    printf("Student's score: %.2f\n", stu.score);
}

int main() {

    struct Student tom = {1, "Tom", 20, 95.5};

    printStudent(tom);

    return 0;
}

在上述示例中,定义了一个 printStudent 函数,接收一个 Student 类型的结构体作为参数,并将其成员打印输出。

示例1

下面是一个结构体指针类型的示例:

#include <stdio.h>

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

void printStudent(struct Student *stu) {
    printf("Student's ID: %d\n", stu->id);
    printf("Student's name: %s\n", stu->name);
    printf("Student's age: %d\n", stu->age);
    printf("Student's score: %.2f\n", stu->score);
}

int main() {

    struct Student tom = {1, "Tom", 20, 95.5};
    struct Student *p = &tom;

    printStudent(p);

    return 0;
}

在上述示例中,定义了一个 printStudent 函数,接收一个 Student 类型的结构体指针作为参数,并将其成员打印输出。

示例2

下面是一个结构体数组类型的示例:

#include <stdio.h>

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

void printStudents(struct Student stus[], int len) {
    for (int i = 0; i < len; i++) {
        printf("Student %d:\n", i+1);
        printf("ID: %d\n", stus[i].id);
        printf("Name: %s\n", stus[i].name);
        printf("Age: %d\n", stus[i].age);
        printf("Score: %.2f\n", stus[i].score);
    }
}

int main() {

    struct Student stus[3] = {
        {1, "Tom", 20, 95.5},
        {2, "Jack", 21, 80.0},
        {3, "Mary", 19, 88.5}
    };

    printStudents(stus, 3);

    return 0;
}

在上述示例中,定义了一个 printStudents 函数,接收一个 Student 类型的结构体数组和数组的长度作为参数,并遍历数组将所有结构体成员打印输出。

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

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • C语言实现用户态线程库案例

    C语言实现用户态线程库案例攻略 1. 理解用户态线程库 用户态线程库是一种多线程机制,其特点是由用户程序掌控所有线程的调度和管理,而不是交给操作系统内核的调度。因此,在用户态线程库中,线程的切换和调度通过用户程序实现,减少了系统调用的开销,提高了CPU的利用率和程序响应速度。 用户态线程库分为两类:协作式和抢占式。协作式线程库需要线程主动释放CPU资源,而抢…

    C 2023年5月23日
    00
  • Win7系统无法创建休眠文件且提示错误代码0xc000007f的解决方法

    Win7系统无法创建休眠文件且提示错误代码0xc000007f的解决方法 问题描述 在 Win7 系统中,有时会出现无法创建休眠文件的情况,并且会提示错误代码 0xc000007f,导致无法使用计算机的休眠功能。这种情况可能会影响用户的使用体验,因此需要及时解决。 解决方法 方法一:修复系统文件 1.打开开始菜单,在搜索栏中输入“cmd”,然后右键单击“命令…

    C 2023年5月23日
    00
  • C语言 结构体(Struct)详解及示例代码

    C语言 结构体(Struct)详解及示例代码 什么是结构体(struct)? 结构体是C语言中一种构造类型(Compound Type),它可以将多个不同类型的变量组合成一个整体,方便在程序中进行操作。 一个结构体可以包含任意数量的成员变量,每个成员变量可以是基本类型,也可以是其他结构体类型。结构体定义语法如下: struct 结构体名称 { 数据类型 成员…

    C 2023年5月24日
    00
  • C语言动态内存的分配实例详解

    C语言动态内存的分配实例详解 什么是动态内存分配 C语言中的内存分为两种:静态内存和动态内存。 静态内存是在程序编写的时候,由编译器在编译时分配的一块内存空间,也就是常说的栈和全局变量。静态内存在程序生命周期内都是存在的,由系统负责内存的分配和管理。 而动态内存分配,则是在程序执行过程中,需要临时分配一块内存空间,用于存储数据,这种分配方式就是动态内存分配。…

    C 2023年5月22日
    00
  • 数据库设计规范化的五个要求 推荐收藏

    数据库设计规范化是一项非常重要的工作,它能够确保数据库的稳定性和可靠性。下面介绍数据库设计规范化的五个要求及相应的推荐收藏。 一、满足第一范式(1NF) 第一范式中要求每个表中的每一列都是原子性的,即不可再分解。如果一个表中存在重复的数据,就需要将其拆分为多个表,每个表中都只包含单一属性。例如,考虑一个音乐播放平台,一个包含歌曲名、歌手和作曲家的表格: So…

    C 2023年5月22日
    00
  • C++实现学生信息管理系统

    C++ 实现学生信息管理系统的攻略可以分为以下几个步骤: 1. 界面设计 学生信息管理系统需要一个良好的界面来提供用户友好的使用体验。可以使用如 Qt 等界面框架,或者使用C++标准库提供的基本控制台界面来实现。 2. 数据存储与处理 信息管理系统需要能够存储和处理学生信息,可以选择使用文件、数据库或者数据结构等来完成。 2.1 文件存储 使用文件存储数据是…

    C 2023年5月23日
    00
  • C语言实现电子英汉词典系统

    C语言实现电子英汉词典系统 系统设计 选择数据结构 电子英汉词典系统需要对大量的单词进行存储和查找,一些基本的数据结构如链表、二叉树等都可以用于实现这个系统。在这里,我们选择哈希表作为数据结构,因为哈希表具有快速的插入、删除和查找特性,并且空间利用率较高。 实现哈希表 哈希表需要满足以下几个要求: 通过哈希函数将字符串映射成哈希值 处理哈希碰撞 向哈希表中插…

    C 2023年5月23日
    00
  • C++利用jsoncpp库实现写入和读取json文件

    下面是C++利用jsoncpp库实现写入和读取json文件的完整攻略。 安装jsoncpp库 首先需要安装jsoncpp库,可以通过以下方式进行安装: 使用apt-get命令在Ubuntu系统下安装: sudo apt-get install libjsoncpp-dev 使用yum命令在CentOS系统下安装: sudo yum install jsonc…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部