У меня проблема с указателем, отличающимся от адреса, чем я ожидал (я знаю, что у меня синтаксис неправильный, я просто не вижу его, и да, я новичок в C).C указатель не совпадает с адресом
Я использую библиотеку json под названием jansson
, и я написал простую статическую оболочку для преобразования входящей строки в json, но также выполняю некоторую проверку ошибок.
json_t *jsonRoot;
char jsonString[1024];
static bool jsonLoad(char *string, json_t *root){
json_error_t jsonError;
root = json_loads(string, 0, &jsonError);
// Then some error checking is done, and no errors are found
if(!root)
{
return false;
}
if(!json_is_object(root)
{
return false;
}
return true;
}
void main(){
printf("Incoming string is %s\n", jsonString);
if(!jsonLoad(jsonString, jsonRoot)
{
return 0;
}
json_t *id;
id = json_object_get(jsonRoot, "id");
if(!json_is_string(id))
{
// Getting into here
printf("Jansson Error: not a string\n");
}
}
Что я вижу, конечно, с помощью контрольных точек, в том, что мой объект JSON загружается нормально, но когда я вернусь в контексте основной, чтобы затем использовать jsonRoot, он указывает на другой адрес полностью ,
Вы изменяете только локальную переменную внутри 'jsonLoad', поэтому глобальная переменная' root' полностью не изменяется. –
У меня была опечатка, самая первая строка должна была быть 'jsonRoot' не' root' – BarryBones41
Точная же проблема остается, как и непонимание того, как работают аргументы функции C. –