当我将 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);
}
问题是 context
在 webSocketHandler
创建后不是 NULL
,但是如果我尝试在 s32_WSER_Init 中使用它
调用处理程序后,我得到 NULL
。
提前致谢。
最佳答案
如果要将指针修改为struct,必须将pointer to pointer传递给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);
}
您的原始代码将修改context
参数的值,该参数基本上是函数中的局部变量。 C 没有实际引用,它通过值传递指针,然后允许通过指针修改原始指针。如果original是指针,要修改它,需要指针指向指针。
关于c - 在 C 中传递结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32330501/