所以我了解struct的基础知识,或者我以为。我们的老师今天发布了一些代码,并没有完全解释它。这是代码。
//declaring struct
struct params{
int var;
int var2;
int var3;
};
//.c for function(part that matters)
void *estimatepartial(void *info) {
struct params *params = (struct params*) info;
我了解其余代码的作用。我没见过
struct params *params = (struct params*) info;
在我回忆之前。如果有人可以解释我的意思或至少是我所说的话,以便我查找,我将不胜感激。
我尝试过的事情:
答案 0 :(得分:1)
基本上,您正在将void pointer
转换为类型struct params
的指针。
您正在使用空指针,因为void
指针可以保存任何类型的地址。
但是您不能取消引用void指针,因此需要将强制类型转换为实际类型。
示例:
您正在开发library
以向第三方应用程序提供功能,并且您不想与应用程序共享struct param
的定义。
使用void pointer
可以达到以下效果。
void* createParams()
{
struct params *passStruct = malloc(sizeof(*passStruct));
return (void *)passStruct;
}
,应用程序调用此函数来创建Params
结构。
void *paramhandle = createParams();
然后使用paramhandle
呼叫estimatepartial
estimatepartial(paramhandle);
使用void *
提取了struct params
的定义。