我遇到了一個與我預期的地址不同的指針問題(我知道我的語法錯了,我只是看不到它,而且我是新來的C )。C指針不在同一地址
我正在使用名爲jansson
的json庫,我寫了一個簡單的靜態包裝來將傳入的字符串轉換爲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中工作。 –