C语言结构体超详细讲解

yizhihongxing

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日

相关文章

  • tk.mybatis如何扩展自己的通用mapper

    tk.mybatis是一个基于MyBatis的轻量级通用Mapper框架,可以帮助开发者快速开发通用的数据库操作,省去大部分重复编写CRUD方法的工作。如果需要扩展自己的通用Mapper,我们需要遵循以下步骤: 自定义接口及Mapper文件 我们可以通过继承通用Mapper提供的BaseMapper接口,再定义自己的Mapper接口,例如UserMapper…

    other 2023年6月26日
    00
  • Linux服务器基本应用

    Linux服务器基本应用攻略 1、常用操作系统及安装 常用的Linux操作系统有Ubuntu、CentOS、Debian、Red Hat等,其中CentOS是最常用的服务器操作系统之一。 安装CentOS的过程如下:1. 下载CentOS官方镜像,刻录至U盘等载体。2. 进入服务器BIOS设置,选择从U盘启动。3. 进入CentOS安装页面,按提示进行操作,…

    other 2023年6月27日
    00
  • MySQL数据类型varchar详解

    MySQL数据类型varchar详解 什么是MySQL数据类型varchar? varchar是一种MySQL数据类型,是用于存储可变长度的字符类型数据的。即该类型数据的长度可以根据具体数据大小而变化。 varchar的优缺点 优点 可变长度,占用空间较小; 随着数据内容的变化而变化,不会占用过多的空间; 可以存储最大长度为65,535(2^16-1)个字符…

    other 2023年6月25日
    00
  • IOS NSUserDefault 记住用户名及密码功能的实例代码

    下面是关于 iOS NSUserDefaults 记住用户名及密码功能的实例代码的详细攻略。 介绍 NSUserDefault是iOS的一个用于保存应用程序中简单数据的类,通过它可以将数据存储在用户设备中,并且能够够实现跨应用程序访问,比如保存用户的用户名,使用户再次打开应用的时候无需再次输入。在本文中,我们将使用NSUserDefault类来实现应用程序记…

    other 2023年6月27日
    00
  • 关于c#:可空对象必须具有一个值

    在C#中,可空对象必须具有一个值。如果您定义了一个可空对象,您必须在使用它之前为其分配一个值。否则,您将收到一个“System.InvalidOperationException: Nullable object must have a value”异常。在本攻略中,我们将介绍如何解决这个问题。 解决方法 要解决“Nullable object must h…

    other 2023年5月9日
    00
  • gin框架中文文档

    gin框架中文文档 Gin是一种高性能的Go语言Web框架,由于其高性能和简单易用,近年来在开发领域中越来越受欢迎。Gin框架的中文文档对于学习和使用Gin框架的开发者来说是非常重要的参考资料。本文将介绍Gin框架的中文文档,并对其内容和质量进行评价。 Gin框架中文文档概述 Gin框架中文文档由Gin框架官方团队翻译整理,提供了Gin框架完整的API文档、…

    其他 2023年3月29日
    00
  • Ubuntu系统下扩展LVM根目录的方法

    以下是Ubuntu系统下扩展LVM根目录的详细攻略: 1. 确认LVM分区 在扩展LVM根目录之前,我们需要确认LVM分区是否正确。可以使用以下命令查看: sudo fdisk -l 其中,LVM分区的标志是Linux LVM。如果没有这个标志的话,则需要先创建LVM分区。 2. 创建物理卷 首先需要将新硬盘划分为一个物理卷,并加入LVM卷组。我们用设备/d…

    other 2023年6月27日
    00
  • 用npm安装在自己的git

    使用npm安装在自己的git上是一种方便的方式,可以让您在不同的计算机上共享您的代码。下面是在自己的git上使用npm安装的完整攻略,包括两个示例说明。 示例一:在自己的git上安装已发布的npm包 您已经发布了一个npm包,并且想要在自己的git上安装它,可以按照以下步骤进行操作: 打开终端用程序。 在终端中输入以下命令,将npm包安装到您的git上: n…

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