了解结构

时间:2018-09-20 18:58:39

标签: c struct

所以我了解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;

在我回忆之前。如果有人可以解释我的意思或至少是我所说的话,以便我查找,我将不胜感激。

我尝试过的事情:

  • 在struct初始化上查找网站
  • 在线声明结构
  • 在线查看随机结构示例

1 个答案:

答案 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的定义。