簡體   English   中英

將指向C數組的指針傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM