C 谁能给我解释一下这段代码吗?

C 谁能给我解释一下这段代码吗?,c,C,下面是一个我试图理解的程序的小片段,但由于指针的原因无法理解 /* issue JSON-RPC request */ val = json_rpc_call(curl, srv.rpc_url, srv.rpc_userpass, s); if (!val) { fprintf(stderr, "submit_work json_rpc_call failed\n"); goto out; } *json_result = json_is_true(json_object_g

下面是一个我试图理解的程序的小片段,但由于指针的原因无法理解

/* issue JSON-RPC request */
val = json_rpc_call(curl, srv.rpc_url, srv.rpc_userpass, s);
if (!val) {
    fprintf(stderr, "submit_work json_rpc_call failed\n");
    goto out;
}

*json_result = json_is_true(json_object_get(val, "result"));
rc = true;

sharelog(remote_host, auth_user,
     srv.easy_target ? "Y" : *json_result ? "Y" : "N",
     *json_result ? "Y" : "N", NULL, hexstr);

if (debugging > 1)
    applog(LOG_INFO, "[%s] PROOF-OF-WORK submitted upstream.  "
           "Result: %s",
           remote_host,
           *json_result ? "TRUE" : "false");

json_decref(val);

if (*json_result)
    applog(LOG_INFO, "PROOF-OF-WORK found");

/* if pool server mode, return success even if result==false */
if (srv.easy_target)
    *json_result = true;

out:
return rc;
我关注的是这一部分:

/* if pool server mode, return success even if result==false */
if (srv.easy_target)
    *json_result = true;
在我的例子中,srv.easy_目标是正确的。然后json_结果也将为true,但是if语句放在函数的末尾。我只是不明白json_结果会有什么用处。 或者在执行上面的任何代码之前,指针是否会传递它


基本上,放在函数末尾的指针有什么用处?

json\u result
是一个指针,可能是来自外部的参数。使用
*
取消对其的引用,并将其指向的值更改为


这是提供函数结果的一种非常标准的方法。调用者传递一个指向其变量的指针,被调用者执行与此代码完全相同的操作:取消引用传递的指针并更改其指向的值,从而更改调用者的变量。

json\u result
是一个指针,可能是来自外部的参数。使用
*
取消对其的引用,并将其指向的值更改为


这是提供函数结果的一种非常标准的方法。调用者传递一个指向其变量的指针,而被调用者正是这样做的:取消引用传递的指针并更改其指向的值,从而更改调用者的变量。

我不能确定,因为您的代码段中没有包含函数签名,但是,如果
json\u result
是作为函数参数传入的指针,那么它将对函数的调用者有用。在C语言中,当您希望能够从一个函数返回多个值时,通常会传入指向将保存返回值的变量的指针。这可能就是我们正在做的事情

例如,标准库函数就是这样做的。指定从标准输入读取值时使用的格式字符串,然后为其提供指向变量的指针,该变量将用于存储值

int x;
char c;
float f;

scanf("%d %c %f", &x, &c, &f);

我不能确定,因为您的代码段中没有包含函数签名,但是如果
json\u result
是作为函数参数传入的指针,那么它对函数的调用方将很有用。在C语言中,当您希望能够从一个函数返回多个值时,通常会传入指向将保存返回值的变量的指针。这可能就是我们正在做的事情

例如,标准库函数就是这样做的。指定从标准输入读取值时使用的格式字符串,然后为其提供指向变量的指针,该变量将用于存储值

int x;
char c;
float f;

scanf("%d %c %f", &x, &c, &f);

“if语句”会影响上面的代码吗?@dikidera-除非有循环,控件返回,否则不会。在你的代码中似乎没有循环,所以它不会影响上面的代码。“if语句”会影响上面的代码吗?@dikidera-除非有循环,控件返回,不。在你的代码中似乎没有循环,所以它不会影响上面的代码。