C:初始化一个结构并将其分配给函数参数中的指针

d0n.key

由于在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,所以如果有人可以提供解释和/或解决方案,我将非常感激。

亨利·F

在中main()f是结构的分配版本foo您将指向该分配结构的指针传递给init_foo()

有没有必要f成为malloc()“编内init_foo()f已经指向分配的结构。

我认为,只要删除malloc(),它就可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在结构中初始化 int 指针并将其分配给 C 中的数组?

给定一个指向结构的指针,我可以在一行中将聚合初始化程序的结果分配给该结构吗?

初始化向量并将其分配给R中的'externalptr'时不兼容

如何构造一个指向结构的指针数组并将值分配给创建的结构

如何分配给函数中未初始化的指针变量?

从列表中取出一个元素并将其分配给一个变量

将最后一个位置参数分配给变量并将其从“ $ @”中删除

在函数中获取变量并将其分配给其范围之外的另一个变量

根据参数数量从函数返回结构对象并将其分配给通用结构的对象

在 bash 变量中应用 sed 并将其分配给另一个

过滤数组中的对象并将其分配给另一个对象

在 Swift 中声明一个类类型的变量并将其分配给不同的变量

是否可以将C ++指针分配给Python对象的属性,然后在另一个C ++函数中将其作为C ++指针检索?

在C ++中初始化一个指针

分配给未初始化的整数指针

C ++将函数指针分配给另一个

定义结构的向量并将其作为C中的指针传递-错误:来自不兼容指针类型的初始化

可以将结构指针方法中的指针重新分配给另一个实例吗?

循环遍历数组中的第一级并将其分配给一个变量

在 C 中初始化包含函数指针的结构

为每个组生成一个随机数并将其分配给组中的所有行

Bash 脚本在 file.dev 中查找某些文本并将其分配给一个变量

Postman - 从 Get 请求的响应中获取最后一个 id 并将其分配给变量

如何转换一个column的值列表并将其分配给0或1

通过char Stack创建一个char并将其分配给标签。JavaFX

删除碎片并将其空间分配给另一个

在函数中创建一个空列表并将其传递给全局范围。(在函数中初始化空列表)

创建一个新文件以在 C 中写入并将其初始化为空?

方法返回的指针未正确分配给 C 中定义的另一个指针