c - 将结构指针传递给函数
问题描述
我试图理解一段代码。我有一个结构,我在全局范围内创建了一个结构变量,并将创建的结构变量的地址传递给不同的函数。在 REC_createInstance 中,我将 oil_qty 的值指定为 5。在 REC_testInstance 中,我试图读取 oil_qty 的值,例如)在这种情况下它可以工作。创建结构变量时。并且通过程序保留分配给函数内部结构的变量的值。
t_REC_instance instance;
void main()
{
REC_createInstance(&instance);
REC_testInstance(&instance);
}
但是在下面的代码中,当创建结构指针并将其传递给函数时,我无法读取在 REC_createInstance 中分配的 REC_testInstance 中 oil_qty 的值。
t_REC_instance *instance; // structure pointer is created
void main()
{
REC_createInstance(instance);
REC_testInstance(instance);
}
int REC_createInstance(t_REC_instance* instance)
{
instance = malloc(sizeof(t_REC_instance)); //code needed when structure pointer is created
instance->currentRecipe =REC_Alloc();
if (!instance->currentRecipe)
{
return -5;
//BEF_EHJ_LOG(-5, destroy_ctx);
}
instance->currentRecipe->tAppBread.oil_qty=5;
return 0;
destroy_ctx:
return -5;
}
int REC_testInstance(t_REC_instance* instance)
{
int var=instance->currentRecipe->tAppBread.oil_qty;
}
创建结构指针时会发生什么?为什么我无法读取其他函数中 REC_createInstance 中分配的 oil.qty 的值?谢谢分享知识。
解决方案
在REC_createInstance
您修改instance
which 是函数的参数时。更改参数不会反映在调用函数中。
您需要传入要修改的变量的地址,并在函数内部相应地取消引用。
所以你的函数看起来像这样:
int REC_createInstance(t_REC_instance **instance)
{
*instance = malloc(sizeof(t_REC_instance));
(*instance)->currentRecipe =REC_Alloc();
...
你这样称呼它:
REC_createInstance(&instance);
推荐阅读
- python - 框架不展开
- javascript - 复选框过滤器。(需要功能逻辑方面的帮助)
- ios - 使用自动布局快速添加阴影和仅左/右角半径
- c++ - 使用 Chemfiles 库读取轨迹文件时出错
- javascript - 防止 Ajax.Complete 中的循环
- windows - Heroku 推送在 Windows + Git bash 中失败
- ffmpeg - 我无法在带有淡入/淡出过渡的缩放和平移中设置视频持续时间
- java - 获取更新行的特定列
- javascript - 像帧缓冲区这样的画布在 chrome 上工作,但在 Firefox 上不工作
- python - 使用正则表达式提取并显示所有使用 Python 的接口的接口和方法状态