MST

星途 面试题库

面试题:C语言复杂结构体的默认值初始化

定义一个结构体,其中包含一个整型数组(长度为5)、一个指向自身结构体类型的指针和一个枚举类型成员。要求在初始化结构体时,整型数组的默认值为从1到5的连续整数,指针初始化为NULL,枚举类型成员根据自定义的枚举值设置一个默认值。请给出结构体定义、枚举定义以及初始化的代码,并说明在初始化指针时需要注意什么问题。
48.0万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 枚举定义
// 定义枚举类型
typedef enum {
    VALUE1,
    VALUE2,
    VALUE3
} MyEnum;
  1. 结构体定义与初始化
// 定义结构体
typedef struct MyStruct {
    int arr[5];
    struct MyStruct *ptr;
    MyEnum enumValue;
} MyStruct;

// 结构体初始化
MyStruct initStruct = {
   .arr = {1, 2, 3, 4, 5},
   .ptr = NULL,
   .enumValue = VALUE1
};
  1. 初始化指针时的注意事项:在初始化指针时,将其设置为 NULL 是一种良好的编程习惯,这样可以避免野指针的产生。野指针指向的内存地址是不确定的,访问野指针可能会导致程序崩溃或未定义行为。将指针初始化为 NULL 后,在真正使用指针之前,可以先检查指针是否为 NULL,从而防止出现访问无效内存的错误。例如在后续使用 ptr 指针之前,可以使用 if (initStruct.ptr!= NULL) 这样的判断语句来确保安全访问。