C语言 结构体

yizhihongxing

下面就为大家详细讲解一下“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语言位运算符:与、或、异或、取反、左移与右移详细介绍 C语言提供了位运算符,用于对二进制位进行操作。本文将详细介绍5种常用的位运算符:与、或、异或、取反、左移与右移。 1. 与运算符(&) 与运算符用&表示,它对两个操作数的每一位进行比较,只有在两个操作数的对应位均为1时,结果才为1,否则结果为0。 示例1:将一个数的二进制表示中的第n位清…

    C 2023年5月30日
    00
  • C++实现学生宿舍管理系统

    C++实现学生宿舍管理系统攻略 1. 概述 学生宿舍管理系统是一种管理学生宿舍、学生入住、退房、缴费、维护等功能的软件系统。该系统可以实现学生宿舍信息自动化管理,提高管理效率,节省管理资源,方便学生宿舍的维护和管理。本文将详细讲解如何使用C++实现学生宿舍管理系统。 2. 功能模块 学生宿舍管理系统主要包括用户登录、学生入住、房间管理、缴费管理、维护管理等功…

    C 2023年5月23日
    00
  • C++中如何实现回调的方法示例

    C++中实现回调的方法有多种,下面介绍两种常见的实现方式。 方式一:函数指针 通过函数指针实现回调,需要定义一个函数指针类型,将回调函数与函数指针进行绑定,然后在合适的时机调用函数指针即可。 示例1 定义一个函数指针类型,函数原型为: typedef void (*MyCallbackFunc) (int arg1, int arg2); 其中,第一个参数表…

    C 2023年5月23日
    00
  • 何时喝水一些分析

    何时喝水一些分析 喝水是我们日常生活中非常重要的一项习惯,正确的喝水方式和时间也会对我们的身体健康产生积极影响。本文将从几个方面来分析何时喝水最为合适。 饮食时间 饮食时间是影响我们喝水的一个重要因素。如果在饭前喝水会引起胃酸稀释,影响胃中消化酶的活性,导致吸收不良。因此,在饭前应该尽量避免喝水。但是,如果已经喝饱水,可以等待30分钟再吃饭。 而在饭后喝水则…

    C 2023年5月23日
    00
  • C语言函数调用底层实现原理分析

    C语言函数调用底层实现原理分析,从根本上就是在探究内存是如何管理和运用的。下面我们将介绍在函数调用时,C语言底层的实现原理,并给出两个具体的示例说明。 函数调用栈的实现 在C语言中,函数调用涉及到堆栈的概念。堆栈是一种数据结构,它具有后进先出(LIFO)的特点。当函数被调用时,程序会将当前函数的返回地址(即下一个要执行的指令地址)以及其他一些信息(例如参数值…

    C 2023年5月23日
    00
  • mysql 的load data infile

    MySQL 的 LOAD DATA INFILE 命令可以通过加载本地或远程文件的方式,将数据快速地导入到数据库中,具有导入速度快、效率高等优点。 以下是使用 LOAD DATA INFILE 导入数据的步骤: 1. 准备数据文件 首先要准备好要导入的数据文件,该文件的格式必须与要导入到的表的字段格式完全相同。可以采用各种格式的文件,如 .csv、.txt、…

    C 2023年5月22日
    00
  • C++如何实现BCD码和ASCII码的相互转换

    BCD码是一种二进制编码方式,用来表示十进制数字。在每一个字节中,四位二进制数能够表示一个十进制位的数字。ASCII码则是一种字符编码方式,将每个字符映射为一个唯一的数字。 在C++中,将BCD码转换为ASCII码的一般方法是,将BCD码中的每个数字转换为对应的ASCII码数字。而将ASCII码转换为BCD码的一般方法是,将ASCII码中的每个数字转换为对应…

    C 2023年5月23日
    00
  • 深入理解C语言 static、extern与指针函数

    概述 在C语言中,static和extern是两个关键字,它们的作用主要与变量和函数的作用域和链接有关。而指针函数则是C语言中比较重要的一个概念,用于返回指针类型数据的函数。本文将从这三个方面进行详细讲解。 static关键字 static是一个非常常用的关键字,在C语言中主要有两个作用: 改变变量的作用域。当一个变量被定义为static时,它的作用域仅限于…

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