MST

星途 面试题库

面试题:C语言结构体初始化:常规与嵌套结构体

定义一个包含整型成员和字符数组成员的结构体 `person`,并给出两种不同方式对其进行初始化。然后,定义一个包含 `person` 结构体成员的新结构体 `group`,并对 `group` 进行初始化。
12.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <string.h>

// 定义person结构体
typedef struct {
    int age;
    char name[20];
} person;

// 定义group结构体
typedef struct {
    person member;
    int groupId;
} group;

int main() {
    // 第一种方式初始化person
    person p1 = {25, "Alice"};

    // 第二种方式初始化person
    person p2;
    p2.age = 30;
    strcpy(p2.name, "Bob");

    // 初始化group
    group g1 = { {28, "Charlie"}, 101 };

    // 输出结果
    printf("p1: age = %d, name = %s\n", p1.age, p1.name);
    printf("p2: age = %d, name = %s\n", p2.age, p2.name);
    printf("g1: member age = %d, member name = %s, groupId = %d\n", g1.member.age, g1.member.name, g1.groupId);

    return 0;
}

上述代码定义了person结构体和group结构体,并分别以不同方式对person进行初始化,以及对包含person成员的group结构体进行初始化。

  1. 定义person结构体:包含一个整型成员age和一个字符数组name
  2. 初始化person结构体
    • 第一种方式:在定义p1时直接使用花括号初始化列表进行初始化。
    • 第二种方式:先定义p2,然后分别对p2的成员进行赋值,对于字符串使用strcpy函数进行赋值。
  3. 定义group结构体:包含一个person类型的成员member和一个整型成员groupId
  4. 初始化group结构体:在定义g1时,对member使用花括号初始化列表,同时对groupId进行初始化。最后通过printf函数输出各个结构体成员的值。