由于在Uni进行了赋值,因此我面临着一个怪异的问题,即必须初始化一个结构体以作为函数参数提供的指针。在该init函数内部,一切看起来都很好,但是一旦我尝试在另一个函数中访问对象的值,它们似乎就为空。
由于我很难解释,所以我举了一个小例子,说明了实际和预期的输出:
#include <stdlib.h>
#include <stdio.h>
struct foo {
int bar;
};
void init_foo(struct foo* f) {
f = malloc(sizeof(struct foo));
f->bar = 5;
printf("bar0: %d\n", f->bar);
}
void print_foo(struct foo* f) {
printf("bar1: %d\n", f->bar);
}
int main() {
struct foo f;
init_foo(&f);
print_foo(&f);
}
实际输出:
bar0: 5
bar1: 0
预期产量:
bar0: 5
bar1: 5
我之前还没有处理过C,所以如果有人可以提供解释和/或解决方案,我将非常感激。
在中main()
,f
是结构的分配版本foo
。您将指向该分配结构的指针传递给init_foo()
。
有没有必要f
成为malloc()
“编内init_foo()
。f
已经指向分配的结构。
我认为,只要删除malloc()
,它就可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句