亚洲激情专区-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
洪湖市| 青海省| 万山特区| 高邮市| 佛山市| 仁化县| 温州市| 大田县| 碌曲县| 台江县| 师宗县| 奉新县| 宁津县| 博兴县| 堆龙德庆县| 手游| 商南县| 万州区| 哈尔滨市| 松江区| 宁都县| 西丰县| 鹤山市| 庆城县| 庄河市| 汕尾市| 资阳市| 日土县| 肃南| 子长县| 施秉县| 天水市| 嵊州市| 锡林浩特市| 林口县| 衢州市| 丰原市| 苗栗县| 稻城县| 辽宁省| 麻城市|