C++ CURL 无法设置 header

C++ CURL cannot set header

我目前正在研究有关 CURL 的程序。我编写了以下代码来添加自定义 header:-

struct curl_slist *chunk = NULL;    
chunk = curl_slist_append(chunk, "Another: yes");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);

上面的代码没问题,但是如果我把代码改成下面的,我发现发送的header不包含Another: yes:

void add_header(CURL *c, struct curl_slist *h){
    h = curl_slist_append(h, "Another: yes");
}

struct curl_slist *chunk = NULL;
add_header(curl, chunk);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);

我的第二段代码有什么问题?

问题在于您将指向 chunk 的指针传递给函数,然后为其分配不同的值。您通过复制传递指针本身,这意味着函数内部的 h 与函数外部的 chunk 是不同的指针(是的,它们都指向相同的位置,但它不这无关紧要,因为您正在更改指针本身的值,而不是它指向的内存)。要更改它,请通过引用传递指针:

void add_header(CURL *c, struct curl_slist *&h){ //note the *&
    h = curl_slist_append(h, "Another: yes");
}