对于将指针传递给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;
}
答案 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}}的内存的指针,这将非常有用,但在这种情况下不需要这样做。