前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言中结构体的运用

C语言中结构体的运用

作者头像
曈曈too
发布2023-02-27 15:45:01
5240
发布2023-02-27 15:45:01
举报
文章被收录于专栏:瞳瞳too的学习笔记

在C语言中,"."号和"->"号是用来访问结构体中成员的运算符。

"."号

"."号用来访问结构体中的成员变量。当结构体变量在内存中连续存储时,使用"."号访问结构体中的成员变量。

代码语言:javascript
复制
struct Student {
    int age;
    char name[20];
    float score;
};

int main() {
    struct Student stu;
    stu.age = 20;
    strcpy(stu.name, "Mike");
    stu.score = 89.5;
    return 0;
}

"->"号

"->"号用来访问结构体中的成员变量,当结构体变量存储在指针变量中时,使用"->"号访问结构体中的成员变量。

代码语言:javascript
复制
struct Student {
    int age;
    char name[20];
    float score;
};

int main() {
    struct Student stu;
    struct Student *pstu = &stu;
    pstu->age = 20;
    strcpy(pstu->name, "Mike");
    pstu->score = 89.5;
    return 0;
}

比较

在上面的两个例子中,我们可以看出 "." 号和 "->" 号的主要区别就在于它们访问结构体成员变量的方式不同。 "." 号在结构体变量在内存中连续存储时使用,而 "->" 号在结构体变量存储在指针变量中时使用。

结构体数组

在 C 语言中,结构体数组是可以被定义的,它是由多个结构体变量组成的数组。

在访问结构体数组中的成员变量时,我们可以使用 "." 号或 "->" 号。

例如,定义了一个名为 "students" 的结构体数组,其中包含了 5 个 "Student" 结构体变量,那么可以使用如下方式访问数组中第 3 个元素的 age 成员变量:

代码语言:javascript
复制
struct Student {
    int age;
    char name[20];
    float score;
};

int main() {
    struct Student students[5];
    students[2].age = 20;
    strcpy(students[2].name, "Mike");
    students[2].score = 89.5;
    return 0;
}

或者使用指针变量访问

代码语言:javascript
复制
struct Student {
    int age;
    char name[20];
    float score;
};

int main() {
    struct Student students[5];
    struct Student *pstu = &students[2];
    pstu->age = 20;
    strcpy(pstu->name, "Mike");
    pstu->score = 89.5;
    return 0;
}

通过这些例子我们可以看出,在访问结构体数组中的成员变量时,我们可以使用 "." 号或 "->" 号,两者在语法上等价。但是在代码中应该根据实际情况来选择使用哪种运算符,以保证代码的正确性和可读性。

结构体的嵌套定义

在 C 语言中,结构体可以嵌套定义,即一个结构体可以包含另一个结构体的成员变量。

例如,定义了一个名为 "Person" 的结构体,其中包含了 "Address" 结构体的成员变量,那么可以使用如下方式访问 Person 结构体中 Address 结构体的 city 成员变量:

代码语言:javascript
复制
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 = 10;
    rect.bottomRight.y = 10;

    // 使用连续的 "." 号访问成员变量
    printf("Top left point: (%d, %d)\n", rect.topLeft.x, rect.topLeft.y);
    printf("Bottom right point: (%d, %d)\n", rect.bottomRight.x, rect.bottomRight.y);

    // 使用指针变量访问成员变量
    struct Rectangle *prect = ▭
    printf("Top left point: (%d, %d)\n", prect->topLeft.x, prect->topLeft.y);
    printf("Bottom right point: (%d, %d)\n", prect->bottomRight.x, prect->bottomRight.y);

    return 0;
}

上面的例子中,我们定义了两个结构体 Point 和 Rectangle。Point 结构体中包含了 x 和 y 成员变量,而 Rectangle 结构体中包含了两个 Point 结构体的成员变量 topLeft 和 bottomRight。

我们可以使用连续的 "." 号来访问嵌套结构体中的成员变量,比如 rect.topLeft.x 和 rect.bottomRight.y。

也可以使用指针变量访问嵌套结构体中的成员变量,比如 prect->topLeft.x 和 prect->bottomRight.y。

从上面的例子可以看出,嵌套结构体在 C 语言中的应用非常灵活,可以使用 "." 和 "->" 号来访问嵌套结构体中的成员变量。

总结:

C语言中结构体是一种重要的数据类型,可以用来组织复杂的数据结构。通过结构体,我们可以将相关的数据项组织在一起,方便程序访问和维护。 在访问结构体成员时,可以使用 "." 号或者是 "->"号,其中 "."号只能用于非指针变量,而 "->"号只能用于指针变量。这两个符号都可以连续使用,来访问嵌套结构体中的成员变量。

希望这篇文章能帮助大家对结构体在C语言中的运用有更深入的了解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • "."号
  • "->"号
  • 比较
  • 结构体数组
  • 结构体的嵌套定义
  • 总结:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档