【数据结构】C语言结构体详解

目录

前言

一、结构体的定义

二、定义结构体变量

三、结构体变量的初始化

四、使用typedef声明新数据类型名

五、指向结构体变量的指针

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

结构体是C语言中一种自定义的数据类型,它允许开发者将不同类型的数据组合在一起,形成一个更复杂的数据结构,提高程序的灵活性和扩展性。本文将详细介绍C语言中结构体的基本概念、定义和使用方法,希望能够帮助读者更好地理解和应用结构体。


一、结构体的定义

在C语言中,结构体是一种用户自定义的数据类型,它允许我们将不同的数据类型组合在一起,创建一个具有自定义属性的复合数据类型。

结构体可以通过下面的语法进行定义:

struct <结构体名>
{
  <成员1的数据类型> <成员1的名称>;
  <成员2的数据类型> <成员2的名称>;
  // ...
  <成员N的数据类型> <成员N的名称>;
};

例如,下面的代码定义了一个名为 Person 的结构体,其中包含了姓名、年龄和身高三个成员:

struct Person
{
  char name[50];
  int age;
  double height;
};

这个结构体可以用来描述一个人的基本信息。可以通过下面的语句来定义 Person 的一个实例:

struct Person person1; // 定义一个名为 person1 的 Person 类型的变量

然后就可以通过 . 运算符来访问结构体的成员,例如:

strcpy(person1.name, "Filotimo");
person1.age = 20;
person1.height = 1.80;

完整代码:

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

struct Person
{
  char name[50];
  int age;
  double height;
};

int main()
{
  struct Person person1;

  strcpy(person1.name, "Filotimo");
  person1.age = 20;
  person1.height = 1.80;

  printf("Person's name: %s\n", person1.name);
  printf("Person's age: %d\n", person1.age);
  printf("Person's height: %.2f\n", person1.height);

  return 0;
}

输出结果如下:

二、定义结构体变量

定义结构体变量的一般语法为:

struct 结构体名称 变量名称;

例如,定义一个包含姓名和年龄两个成员的结构体变量person可以这样写:

struct person {
    char name[20];
    int age;
} p;

上述代码用p作为person类型的结构体变量。我们可以通过访问p的成员来使用这些数据。

三、结构体变量的初始化

结构体变量初始化的示例代码:

struct person {
    char name[20];
    int age;
};

int main() {
    //一般初始化方法
    struct person p1 = {"小明", 18};
    
    //成员初始化
    struct person p2;
    strcpy(p2.name, "小红");
    p2.age = 20;

    return 0;
}

在p1的初始化中,我们直接使用花括号给出name和age的初始值;在p2的初始化中,我们分别对name和age进行了单独的初始化。

四、使用typedef声明新数据类型名

一般形式的typedef类型定义语句如下:

typedef existing_type new_type;

existing_type 是已经存在的数据类型,可以是基本类型(如 int、float、char 等),也可以是结构体、枚举等自定义类型;new_type 是你要定义的新的数据类型名。

以下是两个例子:

1.定义一个新的数据类型名,将 int 重命名为 Integer:

typedef int Integer;

2.定义一个新的数据类型名,将结构体重命名为 Student:

typedef struct {
    int id;
    char name[128];
    int age;
} Student;

五、指向结构体变量的指针

要声明一个指向结构体变量的指针,你可以使用结构体的类型作为指针的基类型,并在声明时使用星号(*)来表示这是一个指针。例如,假设有一个名为Person的结构体,包含name和age字段:

struct Person {
    char name[50];
    int age;
};

你可以声明一个指向Person结构体的指针如下:

struct Person *personPtr;

接下来,你可以通过结构体变量的地址来初始化指针变量,例如:

struct Person person;
personPtr = &person;

现在,personPtr指针指向了person结构体变量在内存中的位置。通过指针,你可以通过箭头运算符(->)来访问和修改结构体中的字段。例如,你可以使用以下语法来访问和修改name和age字段:

strcpy(personPtr->name, "Filotimo");
personPtr->age = 20;

这样就可以在不直接引用结构体变量的情况下,通过指针来操作结构体的字段了。

完整代码:

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

struct Person {
    char name[50];
    int age;
};

int main() {
    struct Person person;
    struct Person *personPtr;

    personPtr = &person;

    strcpy(personPtr->name, "Filotimo");
    personPtr->age = 20;

    printf("Name: %s\n", personPtr->name);
    printf("Age: %d\n", personPtr->age);

    return 0;
}

输出结果如下:


总结

结构体在C语言中扮演着重要的角色,它不仅可以提高程序的效率和可扩展性,还可以使代码更加模块化和易于理解。希望读者通过本文的学习,能够更加熟练地运用结构体来解决实际问题,提高自己的编程水平。

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Filotimo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值