我在 C 程序中传递了大量的指针,我需要帮助来确定我是否做得正确。
我声明一个指向数组结构的指针(包含3个字段,1,相关字段,是一个整数):
StatusItem* statusItem = NULL;
将指向数组指针的指针传递给函数:
parse_object(..., &statusItem, ...)
它被读入函数:
parse_object(..., StatusItem** statusItem, ...)
内存分配:
*statusItem = malloc(cJSON_GetArraySize(*items) * sizeof(StatusItem));
它的一个组件(其中一个索引的整数字段)被传递给另一个函数:
parseInt((*optional)->valuestring, &statusItem[i]->optional)
这是函数,这就是我收到错误的地方。不知何故,我没有正确传递对数组索引的引用:
bool parseInt(char *num, int *result)
{
char *end;
int val = strtol(num, &end, 10);
if(errno == ERANGE || *end != '\0') // checks that given value was a number
{
return false;
}
*result = val;
return true;
}
我知道这确实令人困惑,但我认为我无能为力。如有需要,请要求澄清。
最佳答案
需要将要设置的字段地址传递给parseInt
,从我们可以看到,传递给的是一个
,分配情况为StatusItem*
的地址parse_object
*statusItem = malloc(cJSON_GetArraySize(*items) * sizeof(StatusItem));
可能是
&(*statusItem)[i].optional
(*statusItem)
为您提供指向已分配内存的指针,索引 (*statusItem)[i]
然后访问 i
-已分配的 StatusItem
对象,然后选择其可选
字段,最后获取该对象的地址。
关于c - 传递指针到指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940306/