gpt4 book ai didi

c - 生成对象数据用作函数参数的语法导致错误

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

我们有一个 typedef *int 数据,我正在尝试创建一个生成器函数

Data data_gen(int idata){
Data d = malloc(sizeof(idata));
d = &idata;
return d;
}

但是,当我将此函数作为参数传递给另一个需要 Data 作为参数的函数时,我收到以下错误,方法从整数生成指针而不进行强制转换,这表明我的方法 data_gen 返回一个整数而不是数据对象。

typedef int* Data;

我使用 data_gen 调用此函数并收到错误:

void bstree_insert(BStree bst, Key key, Data data);

其中第三个参数是 data_gen 的调用

最佳答案

这修复了生成器函数中的错误:

Data
data_gen(int idata)
{
Data d = malloc(sizeof(*d));

*d = idata;

return d;
}

此函数的 typedef 为:

typedef Data (*data_function)(int);

然后,您的树函数需要是:

void bstree_insert(BStree bst, Key key, data_function gen);

所以,现在您正在将一个简单的指针(即 int *)与一个指向返回 int * 的函数的指针混合在一起。.这些不是同一件事。

关于c - 生成对象数据用作函数参数的语法导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53423693/

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