中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

用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
开封县| 永康市| 桃园县| 新乡县| 寻乌县| 崇州市| 宁乡县| 当雄县| 太白县| 浦北县| 镇巴县| 吉水县| 临泽县| 海宁市| 汝州市| 乌海市| 溧阳市| 遂溪县| 武功县| 兴海县| 琼中| 喀什市| 赤峰市| 绥中县| 海阳市| 睢宁县| 博客| 格尔木市| 都兰县| 郧西县| 广宗县| 理塘县| 永安市| 延川县| 淮北市| 辽阳市| 马尔康县| 内丘县| 沾化县| 军事| 江都市|