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++实现单例模式实例详解 什么是单例模式 单例模式是一种创建型设计模式,这种模式的主要特点是只能创建一个实例对象,该实例对象可以在系统内部被任何方法访问和共享。单例模式在许多场景下都有着广泛的应用,比如Spring中的Bean管理、数据库连接池等等。 单例模式的实现方法 在C++中,实现单例模式主要有两种方式:懒汉式和饿汉式。其中懒汉式是在第一次使用时创建…

    C 2023年5月23日
    00
  • Spring Boot全局异常处理解析

    下面是关于Spring Boot全局异常处理解析的完整攻略,包括了详细的讲解和示例说明。 什么是全局异常处理 在 Spring Boot 中,我们可以使用 @ControllerAdvice 注解来定义一些全局的异常处理方法,这些方法可以捕获到应用程序中可能出现的异常,并进行特定的处理。全局异常处理能够提供更友好的错误信息,方便开发人员和用户进行错误排查和解…

    C 2023年5月23日
    00
  • 全局变量与局部变量在内存中的区别详细解析

    全局变量与局部变量是程序设计中常用的两种变量类型。它们在内存中存储的位置和访问方式都有很大的不同。本文将详细解析它们的区别,并通过两条示例,说明它们在内存中的不同存储方式。 全局变量 全局变量是定义在程序的主体之外的变量,可以被程序的任意部分访问。在C语言中,通过在函数外部定义变量可以创建全局变量。 全局变量的存储位置是在程序的静态数据区中。在程序启动时,就…

    C 2023年5月23日
    00
  • 优秀程序员必须知道的20个位运算技巧

    优秀程序员必须知道的20个位运算技巧攻略 什么是位运算? 位运算是一种对二进制数进行运算的方法,包括按位与(&),按位或(|),按位异或(^),以及取反(~)等操作。在计算机领域,位运算被广泛使用,能够有效提高程序的效率和可靠性。 为什么需要位运算? 在很多情况下,位运算比其它运算符更高效。例如,在计算机领域,位运算操作单元的大小通常为字节(8位),…

    C 2023年5月23日
    00
  • 详解MD5算法的原理以及C#和JS的实现

    详解MD5算法的原理以及C#和JS的实现 什么是MD5? MD5(Message Digest Algorithm 5) 是一种数字签名算法,用于确保数据的完整性和一致性,是最常用的摘要算法之一,不可逆且不唯一。 MD5算法可以将任意长度的文本映射成固定长度的文本,通常为32位的16进制数。MD5生成的结果具有一定的唯一性和随机性,相同输入生成的结果相同,不…

    C 2023年5月23日
    00
  • 将List对象列表转换成JSON格式的类实现方法

    将List对象列表转换成JSON格式,一般使用JSON工具库实现,如Jackson和Gson。下面将分别介绍Jackson和Gson两个库的实现方法。 Jackson 步骤一:导入Jackson库 在pom.xml文件中添加以下依赖: <dependencies> <dependency> <groupId>com.fas…

    C 2023年5月23日
    00
  • C语言和Objective C的区别

    下面是详细讲解“C语言和ObjectiveC的区别”的完整使用攻略。 C语言和Objective-C的区别 概述 C语言是一种面向过程的编程语言,它没有面向对象的特性,而Objective-C则是C语言的扩展,增加了面向对象的特性。Objective-C是苹果公司的官方语言,主要用于iOS和MacOSX操作系统的开发。 区别 语法差异 C语言使用结构体来实现…

    C 2023年5月10日
    00
  • C语言打印正方形实例代码

    请注意阅读以下内容: 打印正方形实例代码 在C语言中,使用循环语句可以轻松打印出正方形图形。下面是一份简单的C代码示例: #include <stdio.h> int main() { int i, j, num; printf("请输入要打印正方形的边长(1-20):"); scanf("%d", &am…

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