c - 理解结构
问题描述
所以我了解 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;
从我记得之前。如果有人可以解释我这是做什么的,或者至少它叫什么,那么我可以查一下,我会很感激的。
我试过的:
- 查找有关结构初始化的网站
- 在线声明结构
- 在线查看随机结构示例
解决方案
基本上你是 typecastingvoid pointer
的指针类型struct params
。您正在使用 void 指针,因为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
.
推荐阅读
- jenkins - Jenkins/Groovy:如何将命名参数和闭包传递给同一个方法?
- sql - 使用 SQL 更新访问表
- visual-studio - 控制在 Visual Studio 中为英特尔 Fortran 项目编译哪些源文件的最佳方法是什么?
- css - 指定旧版 `inline-block` 显示值的新方法是什么?
- express - 无法连接到机器 A 上的 redis db,我正在尝试从机器 b 连接到它
- r - 检查 R 中的多列
- c# - 在 C# (Unity) 中使用静态临时变量有什么好处吗?
- python - 从 Google colab 笔记本中提取 Google Drive multi zip
- typescript - 使用可选键选择
- gis - 如何使用补丁变量的约束设置乌龟的随机 XY 坐标