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.
提前致谢.
如果要修改指向 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是指针,并且您想要修改它,则需要指向指针.