[英]Passing pointer to C array to a function
關於將指針傳遞給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;
}
在函數get_response
您將request
的地址存儲在臨時變量response
。 您希望將其存儲在response
點所在的位置 。
*response = request;
嘗試*response = request
:您想要將響應指針的內容設置為請求內容。
你想要*response = request;
而不是response = &request;
在get_response(...)
首先,使用當前聲明和get_response
的使用,參數response
被聲明為char**
,它是指向char*
的指針,例如指向指針的指針。 如果你以某種方式需要修改實際指向包含你的response
的內存的指針,這將是有用的,但在這種情況下,這是不需要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.