91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

用container_of宏解決鏈表問題

小樊
83
2024-09-02 19:44:59
欄目: 編程語言

container_of 宏是一個用于在 Linux 內核中獲取容器結構體指針的實用宏

以下是一個簡單的示例,說明如何使用 container_of 宏解決鏈表問題:

#include<stdio.h>
#include <stdlib.h>

// 定義一個鏈表節點結構體
typedef struct list_node {
    int data;
    struct list_node *next;
} ListNode;

// 定義一個包含鏈表節點的容器結構體
typedef struct container {
    int id;
    ListNode node;
} Container;

// 創建一個新的容器并初始化其鏈表節點
Container *create_container(int id, int data) {
    Container *container = (Container *)malloc(sizeof(Container));
    container->id = id;
    container->node.data = data;
    container->node.next = NULL;
    return container;
}

// 使用 container_of 宏獲取容器結構體指針
Container *get_container_from_node(ListNode *node) {
    return container_of(node, Container, node);
}

int main() {
    // 創建兩個容器并初始化其鏈表節點
    Container *container1 = create_container(1, 10);
    Container *container2 = create_container(2, 20);

    // 將兩個容器的鏈表節點連接起來
    container1->node.next = &container2->node;

    // 通過鏈表節點獲取容器結構體指針
    Container *found_container = get_container_from_node(container1->node.next);

    // 輸出找到的容器的 ID 和數據
    printf("Found container with ID: %d and data: %d\n", found_container->id, found_container->node.data);

    // 釋放分配的內存
    free(container1);
    free(container2);

    return 0;
}

在這個示例中,我們定義了一個鏈表節點結構體 ListNode 和一個包含鏈表節點的容器結構體 Container。我們創建了兩個容器并將它們的鏈表節點連接起來。然后,我們使用 container_of 宏從鏈表節點獲取容器結構體指針,并輸出找到的容器的 ID 和數據。

0
文安县| 怀柔区| 沁阳市| 大宁县| 垣曲县| 灵台县| 长兴县| 和田市| 海宁市| 安顺市| 娱乐| 上饶县| 勐海县| 根河市| 井冈山市| 聂拉木县| 高密市| 镇赉县| 西华县| 石屏县| 宾川县| 萨嘎县| 都江堰市| 八宿县| 蓬安县| 深圳市| 会同县| 云梦县| 阿鲁科尔沁旗| 和政县| 白水县| 汨罗市| 瑞昌市| 读书| 荥经县| 云和县| 苍溪县| 郧西县| 岚皋县| 宁晋县| 石城县|