亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

用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
佳木斯市| 化隆| 金溪县| 松滋市| 竹北市| 昌吉市| 高陵县| 麻城市| 天全县| 汝南县| 涿州市| 咸丰县| 沙雅县| 崇州市| 台北市| 广饶县| 古蔺县| 汽车| 谷城县| 德昌县| 措勤县| 酉阳| 安塞县| 西青区| 日喀则市| 宣武区| 云林县| 息烽县| 鹤山市| 长沙市| 嘉鱼县| 海淀区| 枣强县| 日土县| 广东省| 炉霍县| 曲阜市| 孙吴县| 博野县| 安新县| 桦甸市|