MST

星途 面试题库

面试题:C语言中typedef简化结构体的常见应用场景

请举例说明在C语言中,typedef简化结构体在哪些实际编程场景下能显著提高代码可读性,并给出相应代码示例。
24.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 场景一:链表操作
    • 在链表操作中,使用typedef简化结构体定义,能使代码在创建节点、插入节点等操作时更易读。
    • 示例代码:
// 使用typedef定义链表节点
typedef struct ListNode {
    int data;
    struct ListNode* next;
} ListNode;

// 创建新节点函数
ListNode* createNode(int value) {
    ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
    newNode->data = value;
    newNode->next = NULL;
    return newNode;
}

// 插入节点到链表头部
void insertAtHead(ListNode** head, int value) {
    ListNode* newNode = createNode(value);
    newNode->next = *head;
    *head = newNode;
}

在上述代码中,ListNode代替了struct ListNode,在函数createNodeinsertAtHead中,代码看起来更加简洁,不需要每次都写struct关键字。

  1. 场景二:图形编程中表示点或向量
    • 在图形编程里,经常需要表示点或向量。使用typedef可以让代码更清晰地表达其用途。
    • 示例代码:
// 使用typedef定义二维点
typedef struct Point {
    int x;
    int y;
} Point;

// 计算两点间距离函数
double distance(Point p1, Point p2) {
    return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}

这里Point代表二维点,在distance函数中使用Point来表示参数,使代码直观地表达了函数的功能是计算两个点之间的距离,提高了代码可读性。