C 语言结构体常用操作

发布时间 2023-04-22 09:41:53作者: linux星

在C语言中,结构体是一种包含不同数据类型的自定义数据类型。常用的结构体操作有:

 

1. 定义结构体

 

定义结构体可以使用`struct`关键字,语法格式如下:

 

```c

struct 结构体名称 {

    数据类型 成员名称1;

    数据类型 成员名称2;

    //...

};

```

 

例如:

 

```c

struct Student {

    char name[20];

    int age;

    float score;

};

```

 

2. 初始化结构体

 

初始化结构体可以在定义时进行,语法格式如下:

 

```c

struct 结构体名称 结构体变量名 = {成员1初始值, 成员2初始值, ...};

```

 

例如:

 

```c

struct Student stu1 = {"小明", 18, 90.5};

```

 

3. 访问结构体成员

 

访问结构体成员需要使用`.`运算符,格式如下:

 

```c

结构体变量名.成员名称

```

 

例如:

 

```c

printf("姓名:%s,年龄:%d岁,成绩:%.1f分", stu1.name, stu1.age, stu1.score);

```

 

4. 结构体数组

 

结构体数组表示多个相同类型的结构体变量,例如:

 

```c

struct Student stuArr[3] = {

    {"小明", 18, 90.5},

    {"小红", 17, 89.0},

    {"小刚", 18, 95.0}

};

```

 

访问结构体数组中的某个结构体变量的成员:

 

```c

printf("%s的成绩是%.1f分", stuArr[0].name, stuArr[0].score);

```

 

5. 结构体指针

 

获取结构体变量的地址可以使用`&`运算符,格式如下:

 

```c

&结构体变量名

```

 

获取结构体指针可以使用`*`运算符,格式如下:

 

```c

struct 结构体名称 *结构体指针变量名;

```

 

例如:

 

```c

struct Student *pStu = &stu1;

```

 

通过结构体指针访问结构体成员使用`->`运算符:

 

```c

printf("姓名:%s,年龄:%d岁,成绩:%.1f分", pStu->name, pStu->age, pStu->score);

```

 

6. 结构体作为函数参数

 

可以将结构体作为函数参数进行传递,例如:

 

```c

void printStudent(struct Student stu) {

    printf("姓名:%s,年龄:%d岁,成绩:%.1f分", stu.name, stu.age, stu.score);

}

```

 

或者使用结构体指针作为函数参数:

 

```c

void printStudent(struct Student *pStu) {

    printf("姓名:%s,年龄:%d岁,成绩:%.1f分", pStu->name, pStu->age, pStu->score);

}

```

 

7. 结构体嵌套

 

结构体中可以嵌套其他的结构体,例如:

 

```c

struct Date {

    int year;

    int month;

    int day;

};

 

struct Student {

    char name[20];

    int age;

    float score;

    struct Date birthday; // 嵌套了日期结构体

};

```

 

访问嵌套结构体的成员可以使用`.`和`->`运算符,例如:

 

```c

printf("%s的生日是%d年%d月%d日", stu1.name, stu1.birthday.year, stu1.birthday.month, stu1.birthday.day);

```