MST

星途 面试题库

面试题:C语言结构体初始化的常见技巧应用

定义一个包含整型、字符型和浮点型成员的结构体,使用至少两种不同的初始化技巧对其进行初始化,并说明每种技巧的适用场景。
42.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 传统初始化方式
#include <stdio.h>

// 定义结构体
struct MyStruct {
    int intValue;
    char charValue;
    float floatValue;
};

int main() {
    // 传统初始化
    struct MyStruct myStruct1;
    myStruct1.intValue = 10;
    myStruct1.charValue = 'A';
    myStruct1.floatValue = 3.14f;

    printf("传统初始化: intValue = %d, charValue = %c, floatValue = %f\n", myStruct1.intValue, myStruct1.charValue, myStruct1.floatValue);

    return 0;
}

适用场景:当需要逐步对结构体成员进行赋值,并且可能根据不同条件或逻辑分步设置成员值时,这种方式比较灵活。比如在一个函数内部,根据函数执行过程中的不同情况为结构体成员赋值。

  1. 初始化列表方式
#include <stdio.h>

// 定义结构体
struct MyStruct {
    int intValue;
    char charValue;
    float floatValue;
};

int main() {
    // 初始化列表方式
    struct MyStruct myStruct2 = {20, 'B', 2.718f};

    printf("初始化列表方式: intValue = %d, charValue = %c, floatValue = %f\n", myStruct2.intValue, myStruct2.charValue, myStruct2.floatValue);

    return 0;
}

适用场景:当结构体创建时就已知所有成员的初始值,并且希望简洁地一次性完成初始化时,使用初始化列表非常方便。比如在定义全局结构体变量,或者在函数内定义一个结构体变量且其初始值固定时。

  1. 指定初始化器方式(C99 及以上)
#include <stdio.h>

// 定义结构体
struct MyStruct {
    int intValue;
    char charValue;
    float floatValue;
};

int main() {
    // 指定初始化器方式
    struct MyStruct myStruct3 = {.intValue = 30, .floatValue = 1.618f, .charValue = 'C'};

    printf("指定初始化器方式: intValue = %d, charValue = %c, floatValue = %f\n", myStruct3.intValue, myStruct3.charValue, myStruct3.floatValue);

    return 0;
}

适用场景:当只想初始化结构体中的部分成员,或者成员初始化顺序与结构体定义顺序不一致时,指定初始化器非常有用。比如在结构体有较多成员,但只需要设置其中几个特定成员的值时。