在C中传递结构

0 c pointers structure function

当我将struct指针传递给函数时,我希望在函数结束后保留​​对指针所做的更改.我不知道我做错了什么.

void webSocketHandler(struct libwebsocket_context* context)
{    
    /* some code */
    context = libwebsocket_create_context(&info);
}

sint32 s32_WSER_Init(sint32* configDataPoolIndexes, struct libwebsocket_context* context)
{
   /* some code */
  webSocketHandler(configDataPoolIndexes, context);
}
Run Code Online (Sandbox Code Playgroud)

问题是在创建它之后context不在NULL内部webSocketHandler,但如果我s32_WSER_Init在调用处理程序后尝试在内部使用它,我会得到NULL.

提前致谢.

hyd*_*yde 5

如果要修改指向 struct的指针,则必须将指针传递给指向 struct的指针:

void webSocketHandler(struct libwebsocket_context** context)
{    
    /* some code */
    /* info parameter missing above? */
    *context = libwebsocket_create_context(&info);
}


sint32 s32_WSER_Init(sint32* configDataPoolIndexes, struct libwebsocket_context* context)
{
   /* some code */
  webSocketHandler(configDataPoolIndexes, &context);
}
Run Code Online (Sandbox Code Playgroud)

您的原始代码将修改context参数的值,该值基本上是函数中的局部变量.C没有实际引用,它按值传递指针,然后允许通过指针修改原始数据.如果original是指针,并且您想要修改它,则需要指向指针.