C语言 结构体

  • Post category:C

接下来我将详细讲解一下C语言结构体的使用攻略。

一、什么是结构体?

结构体是C语言中的一种用户自定义的数据类型,它可以将不同数据类型的变量组合成一个整体,方便数据的存储和处理。通常情况下,结构体被用来描述某个具有多个属性的实体。

结构体的定义格式如下:

struct [结构体名]
{
    [成员变量类型1] [成员变量名1];
    [成员变量类型2] [成员变量名2];
    ...
};

其中,结构体名可以省略,成员变量类型和成员变量名都必须写。

举个例子,下面我们来定义一个“学生”结构体:

struct Student
{
    int id;           // 学号
    char name[20];    // 姓名
    int age;          // 年龄
    char sex[5];      // 性别
};

二、结构体的使用

1. 定义结构体变量

使用结构体之前需要先定义一个结构体变量。

结构体变量的定义格式如下:

[结构体名] [结构体变量名];

举个例子:

struct Student stu;

2. 访问结构体成员

结构体成员可以通过“.”来访问。

举个例子:

stu.id = 001;
strcpy(stu.name, "Tom");
stu.age = 18;
strcpy(stu.sex, "male");

3. 结构体数组

结构体数组是由多个结构体变量组成的数组。

定义结构体数组的格式如下:

[结构体名] [结构体数组名][数组长度];

举个例子:

struct Student stuArray[3];

4. 结构体指针

结构体指针是指向结构体变量的指针。

定义结构体指针的格式如下:

[结构体名] * [结构体指针名];

举个例子:

struct Student * pStu;

5. 结构体作为函数参数

和其他变量一样,结构体也可以作为函数参数传递。

示例代码:

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

// 定义结构体
struct Student
{
    int id;           // 学号
    char name[20];    // 姓名
    int age;          // 年龄
    char sex[5];      // 性别
};

// 函数声明
void printStudent(struct Student stu);

int main()
{
    // 定义结构体变量
    struct Student stu;
    stu.id = 001;
    strcpy(stu.name, "Tom");
    stu.age = 18;
    strcpy(stu.sex, "male");

    // 调用函数
    printStudent(stu);

    return 0;
}

// 函数定义
void printStudent(struct Student stu)
{
    printf("学号:%d\n", stu.id);
    printf("姓名:%s\n", stu.name);
    printf("年龄:%d\n", stu.age);
    printf("性别:%s\n", stu.sex);
}

上述代码定义了一个“学生”结构体,并定义了一个输出学生信息的函数printStudent(),最后在主函数中调用该函数,并传递了一个结构体变量作为参数。

输出结果为:

学号:1
姓名:Tom
年龄:18
性别:male

6. 结构体成员指针

结构体成员指针是指向结构体成员的指针,用来直接访问结构体的成员变量。

示例代码:

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

// 定义结构体
struct Student
{
    int id;           // 学号
    char name[20];    // 姓名
    int age;          // 年龄
    char sex[5];      // 性别
};

int main()
{
    // 定义结构体变量
    struct Student stu;
    stu.id = 001;
    strcpy(stu.name, "Tom");
    stu.age = 18;
    strcpy(stu.sex, "male");

    // 定义结构体成员指针
    int * pId = &stu.id;
    char * pName = stu.name;
    int * pAge = &stu.age;
    char * pSex = stu.sex;

    // 通过指针访问结构体成员
    printf("学号:%d\n", *pId);
    printf("姓名:%s\n", pName);
    printf("年龄:%d\n", *pAge);
    printf("性别:%s\n", pSex);

    return 0;
}

上述代码定义了一个“学生”结构体,同时定义了4个指向结构体成员的指针。在主函数中,通过指针访问结构体成员,输出了学生的信息。

输出结果为:

学号:1
姓名:Tom
年龄:18
性别:male

三、小结

C语言中结构体是一种非常有用的数据类型,可以用来组织和存储多个不同类型的数据。在使用结构体的过程中,我们需要注意以下几点:

  1. 结构体的定义格式;
  2. 结构体变量的定义格式;
  3. 结构体成员的访问方法;
  4. 结构体数组的定义格式;
  5. 结构体指针的定义格式;
  6. 结构体作为函数参数的传递方式;
  7. 结构体成员指针的定义方式。

以上便是关于C语言结构体的完整使用攻略,希望对你有所帮助。