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
淮北市| 韶山市| 吉木萨尔县| 荥阳市| 江口县| 吉安市| 太仓市| 墨玉县| 万安县| 佛教| 新干县| 洛川县| 赤壁市| 朝阳区| 龙州县| 米脂县| 西丰县| 宝丰县| 开远市| 天水市| 扶沟县| 丰城市| 郎溪县| 东阿县| 万年县| 永州市| 临颍县| 青浦区| 桦川县| 青冈县| 宽城| 彝良县| 高密市| 昭平县| 鸡西市| 衡水市| 夏河县| 邹城市| 秦安县| 乌兰浩特市| 若羌县|