将结构指针传递给函数

问题描述 投票:-1回答:1

我正在尝试理解一段代码。我有一个结构,并全局创建一个结构变量,然后将创建的结构变量的地址传递给不同的函数。在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;


}

创建结构指针时会发生什么?为什么我看不到指定的oil.qty的值在其他功能的REC_createInstance中?感谢您分享知识。

c structure
1个回答
0
投票
您需要传入要修改的变量的地址,并在函数内部进行相应的取消引用。

所以您的函数将如下所示:

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

您这样称呼它:

REC_createInstance(&instance);
© www.soinside.com 2019 - 2024. All rights reserved.