c - 在 C 中传递结构

标签 c function pointers structure

当我将 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);
}

问题是 contextwebSocketHandler 创建后不是 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/

相关文章:

c++ - 'inet_ntoa' 未声明错误

c - 实现忙循环的最佳方式?

c - 如何在 C 中定义指向函数的指针并将该指针分配给函数?

c - 下面代码中的 char 指针与 int 指针有何不同?

c - blackfin bf537 LED 闪烁

php - 在 php 中使用正则表达式来选择并回显波斯字符

c++ - 将二维数组传递给函数会产生奇怪的错误

c - 我如何使指针工作?

c - 在 C 中比较指针和整数可以吗?

c - 将 float 拆分为两个简单整数?