c语言 结构体初始化的三种方法
C语言中,结构体是一种自定义的数据类型,用于存储多个不同类型的数据。在使用结构体之前,我们需要先对其进行初始化,即给结构体的成员变量赋初值。下面将介绍结构体初始化的三种常见方法。
一、直接初始化法
直接初始化法是最简单直接的初始化方式,通过在定义结构体变量时直接给成员变量赋值。具体语法如下:
struct 结构体类型 变量名 = {成员1的值, 成员2的值, ...};
例如,定义一个学生结构体,并对其进行直接初始化:
```c
#include <stdio.h>
struct Student {
    char name[20];
    int age;
    float score;
};
int main() {
    struct Student stu = {"Tom", 18, 98.5};
    printf("姓名:%s\n", stu.name);
    printf("年龄:%d\n", stu.age);
    printf("分数:%f\n", stu.score);
    return 0;
}
```
运行结果:
姓名:Tom
年龄:18
分数:98.500000
二、成员初始化法
成员初始化法是通过点操作符(.)对结构体的成员变量逐个进行初始化。具体语法如下:
结构体变量.成员1 = 值1;
结构体变量.成员2 = 值2;
...
例如,对上述的学生结构体进行成员初始化:
```c
#include <stdio.h>
struct Student {
    char name[20];
    int age;
    float score;
};
int main() {
    struct Student stu;
    stu.name = "Tom";
    stu.age = 18;
    stu.score = 98.5;
    printf("姓名:%s\n", stu.name);
    printf("年龄:%d\n", stu.age);
    printf("分数:%f\n", stu.score);
    return 0;
}
```
运行结果:
编译错误:assignment to expression with array type
从上述代码可以看出,结构体的成员变量name是一个字符数组,不能直接通过赋值来进行初始化。需要使用strcpy函数将字符串复制给name数组。
```c
#include <stdio.h>
#include <string.h>
struct Student {
    char name[20];
    int age;
    float score;
};
int main() {
    struct Student stu;
    strcpy(stu.name, "Tom");
    stu.age = 18;
    stu.score = 98.5;
    printf("姓名:%s\n", stu.name);
    printf("年龄:%d\n", stu.age);
    printf("分数:%f\n", stu.score);
    return 0;
}
```
运行结果:
姓名:Tom
年龄:18
分数:98.500000
三、指针初始化法
指针初始化法是通过定义一个指向结构体的指针,然后通过指针来初始化结构体的成员变量。具体语法如下:
struct 结构体类型 *指针变量名;
指针变量名->成员1 = 值1;
指针变量名->成员2 = 值2;
...
sizeof结构体大小
例如,对上述的学生结构体进行指针初始化:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
    char name[20];
    int age;
    float score;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。