我很抱歉令人困惑的代码,所以我试图改变整个问题,因此它是实现的:
所以基本上,我有一个预定义的结构,我从头文件中获取,我放在一个主文件中。 我需要创建一个函数,可以在我自己的函数中获取value1->标识的值。
我不应该将value1作为参数传递,因为我可以从用户struct访问value1。 但我如何在int funct(user * user)中执行此操作,因此当我在int funct(user * user)中打印value1->标识时,它不会返回垃圾值。
谢谢
#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;
}
答案 0 :(得分:1)
您是否注意到user
结束前未使用funct
变量?
您正在使用未初始化的指针。这就是为什么你会得到不同(所有同样垃圾)的结果。你必须先解决这个问题。
首先:
chron_apn_con_list_t_slot *chron_slot;
chron_apn_con_t *conn = &chron_slot->conn;
这没有任何意义。没有chron_slot
对象可供使用。您需要使用malloc
分配一个或使用堆栈对象,在声明chron_slot
时省略指针表示法。