C语言结构体超详细讲解

C语言结构体超详细讲解

什么是结构体?

结构体是一种用户自定义的数据类型,它可以由一些基本类型的数据组成一个具有独立性的数据结构。它和数组的定义方式类似,都是用一个标识符来命名,并用大括号将组成这个结构体的数据类型和标识符列表括起来,中间用逗号隔开。例如:

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

上述代码定义了一个名为“Student”的结构体类型,它由三个成员组成:一个字符数组(名为“name”)、一个整型变量(名为“age”)、一个浮点型变量(名为“score”)。

结构体变量的定义和使用

结构体变量的定义和使用与其他变量类似,只不过需要在标识符前加上“结构体类型名”的前缀。例如:

struct Student stu;
strcpy(stu.name, "张三");
stu.age = 20;
stu.score = 86.5;

上述代码定义了一个名为“stu”的结构体变量,并对它的成员变量进行赋值。

结构体成员的访问

结构体的成员可以通过“.”(点)操作符来访问。例如:

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

上述代码输出了结构体变量“stu”的三个成员的值。

结构体指针的定义和使用

结构体指针的定义和使用也与其他指针类似,只不过需要在指针变量前加上“struct”关键字和结构体类型名,并用“->”操作符来访问结构体成员。例如:

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

上述代码定义了一个名为“p”的结构体指针变量,并将其指向结构体变量“stu”,然后通过“->”操作符来访问结构体成员。

结构体作为函数的参数

结构体可以作为函数的参数进行传递。在函数中可以通过指针来访问结构体成员。例如:

void print(struct Student *s) {
    printf("姓名:%s,年龄:%d,分数:%.2f", s->name, s->age, s->score);
}

print(&stu);

上述代码定义了一个名为“print”的函数,它接受一个指向结构体类型为“Student”的指针变量,并输出这个结构体变量的成员。

结构体的嵌套

结构体也可以嵌套在另一个结构体中。例如:

struct Date {
    int year;
    int month;
    int day;
};

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

上述代码定义了一个名为“Date”的结构体类型和一个名为“Student”的结构体类型,其中“Student”类型的成员变量包括一个名为“birthDate”的“Date”类型变量。

示例

示例一

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

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

int main() {
    struct Student stu;
    strcpy(stu.name, "张三");
    stu.age = 20;
    stu.score = 86.5;
    printf("姓名:%s,年龄:%d,分数:%.2f", stu.name, stu.age, stu.score);
    return 0;
}

上述代码定义了一个名为“stu”的结构体变量,对其进行了赋值,并输出了它的三个成员的值。

示例二

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

struct Point {
    int x;
    int y;
};

struct Rectangle {
    struct Point topLeft;
    struct Point bottomRight;
};

int main() {
    struct Rectangle rect;
    rect.topLeft.x = 0;
    rect.topLeft.y = 0;
    rect.bottomRight.x = 100;
    rect.bottomRight.y = 100;
    printf("左上角:%d,%d,右下角:%d,%d", rect.topLeft.x, rect.topLeft.y, rect.bottomRight.x, rect.bottomRight.y);
    return 0;
}

上述代码定义了一个名为“rect”的结构体变量,其中又包含了两个名为“topLeft”和“bottomRight”的结构体变量。可以看出,结构体的嵌套可以用来表示更为复杂的数据结构。

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

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

相关文章

  • Android ndk获取手机内部存储卡的根目录方法

    要在Android NDK中获取手机内部存储卡的根目录,可以使用Java层代码调用Android的API获取路径,再将该路径传递给NDK层。 第一步:在Java层获取存储卡路径 使用以下Java代码可以获取手机内部存储卡的根目录: File storageDir = Environment.getExternalStorageDirectory(); Str…

    other 2023年6月27日
    00
  • php全局变量和类配合使用深刻理解

    PHP全局变量和类配合使用深刻理解攻略 在PHP中,全局变量和类可以结合使用,以实现在不同类和方法之间共享数据的目的。下面是一个详细的攻略,帮助你深刻理解如何使用全局变量和类配合使用。 1. 全局变量的定义和使用 全局变量是在脚本的任何地方都可以访问的变量。在PHP中,可以使用global关键字将一个变量声明为全局变量。下面是一个示例: <?php /…

    other 2023年7月29日
    00
  • 魔兽世界8.0戒律牧天赋怎么点 戒律牧天赋特质及属性推荐

    魔兽世界8.0戒律牧天赋怎么点 在魔兽世界8.0版本中,戒律牧是一个非常有用的职业角色,并且有多种天赋选择。下面是一些关于如何点好您的戒律牧天赋的建议。 聚力治疗 必选:切换符文 这项天赋的效果可以让您的符文吸收更多的伤害。无论是进攻还是防御,都可以在您的队伍中保持更好的生存力。 示例:在史诗级难度的争霸艾泽拉斯副本中,当您的队伍面对巨龙王拉席克时,此特质可…

    other 2023年6月27日
    00
  • 微信小程序的生命周期的详解

    以下是关于“微信小程序的生命周期的详解”的完整攻略,包括基本概念、生命周期函数、示例和注意事项。 基本概念 微信小程序的生命周期是指小程序从启动到销毁的整个过程。在这个过程中,小程序会依次执行一系列的生命周期函数,以完成各种初始化、渲染、交互等操作。 生命周期函数 微信小程序的生命周期函数包括以下几个: onLaunch:小程序初始化时触发,全局只触发一次。…

    other 2023年5月7日
    00
  • 如何实现ls命令在Win7下正常运行

    要在Windows 7系统下实现类Unix命令ls的功能,可以通过安装Git for Windows软件来实现。以下是具体步骤: 下载Git for Windows 首先需要从Git for Windows官网(https://gitforwindows.org/)下载软件安装包。根据自己的操作系统版本(32位或64位)选择对应的安装包,下载完成后双击运行安…

    other 2023年6月26日
    00
  • mysql通过@变量实现递归详细实例

    下面我将详细讲解 “MySQL 通过 @ 变量实现递归的详细实例”。 什么是 MySQL 递归 MySQL 递归是指在一个查询中,通过引用查询自身来实现对层级型数据的遍历操作。递归查询通常需要用到 MySQL 的 @ 变量。 通常的实现原理是在查询过程中,将一些中间结果存入一个 @ 变量中,并在之后的查询中引用这些变量。通过这些变量可以实现递归操作。 递归的…

    other 2023年6月27日
    00
  • 【X86】—X86处理器大小端的数据存储验证

    X86处理器是一种常见的CPU架构,它支持两种不同的数据存储方式:大端模式和小端模式。本文将介绍如何验证X86处理器的数据存储方式,包括大端模式和小端模式的概念、验证方法和示例说明。 1. 大端模式和小端模式 在计算机中,数据存储方式可以分为两种:大端模式和小端模式。大端模式是指高位字节存储在低地址,低位字节存储在高地址;小端模式是指低位字节存储在低地址,高…

    other 2023年5月5日
    00
  • curl.exe帮助

    curl.exe是一个命令行工具,用于在Windows操作系统中发送HTTP请求。本文将介绍如何使用curl.exe,并提供两个示例说明。 步骤1:下载和安装 要使用curl.exe,您需要先下载和安装它。您可以从以下网址下载最新版本的curl.exe: https://curl.se/windows/ 下载完成后,将curl.exe文件复制到您的Windo…

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