将指向C数组的指针传递给函数

时间:2012-02-23 14:09:45

标签: c

对于将指针传递给char数组,我有什么误解?

Request pointer in fun: 0x7fffde9aec80
Response pointer in fun: 0x7fffde9aec80
Response pointer: (nil), expected: 0x7fffde9aec80
Response itself: (null), expected: Yadda
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int get_response(char *request, char **response) {
    response = &request;
    printf("Request pointer in fun: %p\n", request);
    printf("Response pointer in fun: %p\n", *response);
    return 0;
}

int main() {
    char *response = NULL, request[] = "Yadda";

    get_response(request, &response);

    printf("Response pointer: %p, expected: %p\n", response, request);
    printf("Response itself: %s, expected: %s\n", response, request);

    return 0;
}

4 个答案:

答案 0 :(得分:2)

在函数get_response中,您将request的地址存储在临时变量response中。您希望将其存储在response 的位置。

*response = request;

答案 1 :(得分:0)

尝试*response = request:您希望将响应指针的内容设置为请求内容。

答案 2 :(得分:0)

您希望*response = request;

中的response = &request;代替get_response(...)

答案 3 :(得分:0)

首先,通过当前声明和get_response的使用,参数response被声明为char**,这是指向char*的指针,例如response。指向指针的指针。如果您以某种方式需要修改实际指向包含{{1}}的内存的指针,这将非常有用,但在这种情况下不需要这样做。