我目前正在开发一个关于CURL的程序。我编写了以下代码来添加自定义标题: -
struct curl_slist *chunk = NULL;
chunk = curl_slist_append(chunk, "Another: yes");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
以上代码没问题,但如果我将代码更改为以下代码,我发现发送的标题不包含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);
我的第二段代码有什么问题?
答案 0 :(得分:1)
问题在于您将指向chunk
的指针传递给函数,然后为其指定不同的值。你是通过复制传递指针本身,这意味着函数内的h
是一个不同于它外面的chunk
的指针(是的,它们都指向同一个位置,但它没有因为你正在改变指针本身的值,而不是它指向的内存,所以这很重要。要更改它,请通过引用传递指针:
void add_header(CURL *c, struct curl_slist *&h){ //note the *&
h = curl_slist_append(h, "Another: yes");
}