簡體   English   中英

傳遞鏈表並獲取它的值

[英]passing linkedlist and get value of it

對於令人困惑的代碼,我感到非常抱歉,所以我試圖改變整個問題,使它更簡單:

所以基本上,我有一個預定義的結構,我從 header 文件中獲得,我把它放在一個主文件中。 我需要創建一個 function,它可以在我自己的 function 中獲取 value1->identity 的值。

我不應該將 value1 作為參數傳遞,因為我可以從用戶結構訪問 value1。 但是我如何在 int funct(user *user) 中執行此操作,所以當我在 int funct(user *user) 中打印 value1->identity 時,它不會返回垃圾值。

謝謝

#include <stdio.h>
#include <string.h>

typedef struct {
    int identity;
} value;

typedef struct list1_struct {
    value value1;
    struct list1_struct *next, *prev;
} list_t_slot;

typedef struct {
    list_t_slot *head, *tail;
} list_t;

typedef struct {
    int number;
    list_t value1s;
} value2;

typedef struct list2 {
    value2 conn;
    struct list2 *next, *prev;
} list_t_slot2;

typedef struct {
    list_t_slot2 *head, *tail;
} list_t2;

typedef struct {
    int power;
    list_t2 connections;
} user;

int funct(user *user) {

    return 1;
}

int main() {
    user user;
    memset(&user, 0, sizeof(user));

    list_t_slot2 chron_slot;
    memset(&chron_slot, 0, sizeof(chron_slot));
    value2 *conn = &chron_slot.conn;

    list_t_slot value1_slot;
    memset(&value1_slot, 0, sizeof(value1_slot));
    value *value1 = &value1_slot.value1;

    user.power = 1;
    value1->identity = 1;

    printf("value of identity is %d\n", value1->identity);

    funct(&user);

    return 1;
}

您是否注意到直到funct結束才使用user變量?

您正在使用未初始化的指針。 這就是為什么你會得到不同的(同樣是垃圾)結果。 你必須先解決這個問題。

首先:

chron_apn_con_list_t_slot *chron_slot;
chron_apn_con_t *conn = &chron_slot->conn;

這沒有任何意義。 沒有chron_slot object 可以使用。 您要么需要使用malloc分配一個,要么使用堆棧 object 通過在聲明chron_slot時省略指針表示法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM