首页 > 解决方案 > 将结构指针传递给函数

问题描述

我试图理解一段代码。我有一个结构,我在全局范围内创建了一个结构变量,并将创建的结构变量的地址传递给不同的函数。在 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 的值?谢谢分享知识。

标签: cstructure

解决方案


REC_createInstance您修改instancewhich 是函数的参数时。更改参数不会反映在调用函数中。

您需要传入要修改的变量的地址,并在函数内部相应地取消引用。

所以你的函数看起来像这样:

int REC_createInstance(t_REC_instance **instance)
{
    *instance = malloc(sizeof(t_REC_instance)); 
    (*instance)->currentRecipe =REC_Alloc();
    ...

你这样称呼它:

REC_createInstance(&instance);

推荐阅读