gpt4 book ai didi

C 将列表从结构传递到另一个函数

转载 作者:行者123 更新时间:2023-11-30 17:01:31 25 4
gpt4 key购买 nike

谁能给我解释一下发生了什么吗?此代码运行正常:

#include <stdio.h>
#include <stdlib.h>

typedef struct def_List List;

struct def_List {
int x;
int y;
List *next;
};

typedef struct def_Figures {
List *one;
List *two;
} Figures;

void another_function(List *l) {
l = (List*) malloc(sizeof(List));
l->x = 1;
l->next = NULL;
}

void function(Figures *figures) {
another_function(figures->one);
}

int main() {
Figures ms;
function(&ms);
printf("%d",ms.one->x);
return 0;
}

打印“1”。我添加第三个列表:

#include <stdio.h>
#include <stdlib.h>

typedef struct def_List List;

struct def_List {
int x;
int y;
List *next;
};

typedef struct def_Figures {
List *one;
List *two;
List *three;
} Figures;

void another_function(List *l) {
l = (List*) malloc(sizeof(List));
l->x = 1;
l->next = NULL;
}

void function(Figures *figures) {
another_function(figures->one);
}

int main() {
Figures ms;
function(&ms);
printf("%d",ms.one->x); // 1
return 0;
}

打印“-1992206527”。

它适用于一两个列表,但是当我添加第三个或更多列表时,就会出现问题。为什么?

最佳答案

您正在尝试修改another_function(List *l)的参数:

l = (List*) malloc(sizeof(List));

使用指针到指针:

void another_function(List **l) {
*l = (List*) malloc(sizeof(List));
...
void function(Figures *figures) {
another_function(&figures->one);
}

小心:

Figures ms;
function(&ms);

虽然现在分配了图形结构 ms,但列表一、列表二和列表三都是 NULL 并且不指向任何地方。

关于C 将列表从结构传递到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com