gpt4 book ai didi

c - 将结构传递给接受 void * 参数的函数的问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:39 24 4
gpt4 key购买 nike

我想调用一个类型为 foo(void * data) 的函数,并将一个结构变量作为输入参数。

我听说当输入格式是void类型时,它接受所有类型的输入变量类型。尽管如此,我还是收到一条错误消息。

struct info{
int element;
};

struct info inserter_info;
inserter_info.element = 0;

inserter(inserter_info);

其中 inserter() 的原型(prototype)为 void * inserter(void * data)

我试过转换,但后来也收到了错误消息。

最佳答案

I have heard that when the input format is of type void, it accepts every type of input variable type

绝对错了!!! void 表示。它不接受任何东西。

但是,void *视为 通用指针。引用 C11 标准文档,第 6.3.2.3 章,指针,段落 1,

A pointer to void may be converted to or from a pointer to any object type. A pointer to any object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer.

多次使用这个属性,函数参数被写成void *这样,函数可以接受不同类型的指针,然后在函数体内部,基于一些其他参数,接收到的指针在使用之前被转换(转换)回实际的指针类型。

如果检查正确,函数的参数不是void,而是void *

你需要这样调用你的函数

inserter(&inserter_info);

P.S - 你的编译器应该警告你不匹配。

关于c - 将结构传递给接受 void * 参数的函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29943846/

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