C语言编程中使用结构的基本知识

551 阅读3分钟

在C语言中,结构是一个用户定义的变量,用于在一个单一实体下存储变量的集合。让我们用一个简单的比喻来解释C语言中结构的实现和作用。

假设我们想存储使用某个特定服务的用户的信息。这些信息可以包括用户名、电子邮件、地址、服务模式等等。为了存储这些信息,我们可以去创建每个属性作为一个独立的变量。然而,当我们有十多个用户时,代码会失去控制,变得非常难读和令人厌烦。

为了解决这个问题,我们可以创建一个结构。在这个结构中,我们可以存储所有用户共享的所有属性,然后为每个用户添加独特的变量。

让我们看一下各种例子,看看如何实现这一点。

如何在C语言中定义一个结构

要在C语言中定义一个结构,我们使用结构关键字,后面是结构的名称。在名称之后,我们有一对大括号,用来添加成员。

请看下面的语法。

struct struct_name
{
    /* data */
    type member_name;
    type member_name2;
    type member_name3;

    ...
    type member_nameN;
};

结构的名称可以是你想要的任何东西,只要它遵守C语言的命名规则。

我们可以实现一个用户类比的例子结构,如。

struct users
{
    char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
};

如何创建结构变量

有两种主要的方法来创建结构变量。第一种是像普通变量一样声明它们,另一种是使用大括号来设置它们。

下面的例子显示了如何将结构变量作为标准的C变量来声明。

struct users
{
    char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
};

int main(int argc, char const *argv[])
{
    struct users user1, user2, user3
    return 0;
}

另一种创建结构变量的方法如下所示。

struct users
{
    char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
} user1, user2, user3;

在这个例子中,我们在结构声明时创建它们。

结构成员初始化

你不能在创建过程中初始化结构成员,因为没有为该类型分配内存。

为了初始化结构成员,你可以使用大括号,如下所示。

struct users
{
    char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
};
int main(int argc, char const *argv[])
{
    struct users user1 = {"myusername", "zero@user.name", 35, true}
    user1.email = "zero@vuln.io"
    return 0;
}

访问结构成员

要访问一个结构的成员,我们使用点运算符,以结构名称、点和成员的名称开始。

typedef struct users
{
        char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
} u;
int main(int argc, char const *argv[])
{
    u user1 = {"myusername", "zero@user.name", 35, true}
    user1.registered = false
    return 0;
}

在这个例子中,我们访问user1的成员。

Typedef 关键字

我们使用typedef关键字为数据类型创建一个别名,使代码更容易阅读。

比如说

typedef struct users
{
        char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
} u;
int main(int argc, char const *argv[])
{
    u user1 = {"myusername", "zero@user.name", 35, true}
    user1.registered = false
    return 0;
}

在上面的例子中,我们为 "用户 "结构创建了一个别名 "u"。因此,我们不需要每次都调用struct users。我们可以按照上面的定义使用 "u"。

结构指针

你也可以有一个指向结构的指针。这样做允许你使用->操作符访问成员。

比如说

typedef struct users
{
        char username[20];
    char email[225];
    char address[50];
    int age;
    bool registered;
} u;
int main(int argc, char const *argv[])
{
    u user1 = {"myusername", "zero@user.name", 35, true}
   
    // pointer to another structure
    u *user_ptr = &user1
    user_ptr -> username = "ptrusername"
    return 0;
}

结论

本指南涵盖了在C语言编程中使用结构的基本知识。

谢谢你的阅读!