MST

星途 面试题库

面试题:C语言结构体与泛型编程基础

请描述在C语言中,如何定义一个包含不同数据类型成员的结构体。假设要实现一个简单的泛型链表节点,如何通过结构体和typedef来定义它,并且简要说明泛型编程在这种场景下相较于传统固定类型链表的优势。
33.3万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 定义包含不同数据类型成员的结构体: 在C语言中,可以如下定义包含不同数据类型成员的结构体:

    struct MixedData {
        int intValue;
        float floatValue;
        char charValue;
    };
    
  2. 定义简单泛型链表节点: 由于C语言没有像C++那样原生的泛型支持,我们可以通过void*指针来模拟泛型。

    typedef struct GenericListNode {
        void* data;
        struct GenericListNode* next;
    } GenericListNode;
    

    这里data指针可以指向任何类型的数据,从而实现“泛型”。

  3. 泛型编程相较于传统固定类型链表的优势

    • 灵活性
      • 传统固定类型链表只能存储一种特定类型的数据。例如,若定义了一个int类型的链表,就无法直接存储float或其他类型的数据。
      • 泛型链表可以存储任意类型的数据,无需为每种数据类型都单独定义一个链表结构和操作函数,提高了代码的复用性。
    • 可维护性
      • 对于传统固定类型链表,如果需要存储新的数据类型,需要重新编写链表的定义、插入、删除等操作函数。
      • 泛型链表只需一套操作函数(如插入、删除等),通过void*指针来处理不同类型的数据,减少了代码量,使得维护更加容易。