Как я могу изменить функцию, чтобы я мог отправить параметр без &? - PullRequest
0 голосов
/ 14 февраля 2019

Я реализовал функцию с двойными указателями, но я не уверен, как изменить ее, чтобы я мог отправлять параметры без '&'.

void load(char* buf_in, char** buf_out)
{
    uint8_t size;

    size = strlen(buf_in) + 1;

    *buf_out = malloc(size);

    if (*buf_out == NULL)
    {
        printf("memory cannot be allocated!\n");
        return;
    }
    else
    {
        memset(*buf_out, 0x00, size);
    }

    memcpy(*buf_out, buf_in, strlen(buf_in));
}


int main()
{
     char* output;

     load("this_is_data", &output);
}

Функция работает правильно, но я застрял в другой реализации(может быть, есть какой-то более простой способ сделать это, например, без двойных указателей?)

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вы можете объявить output как массив.

char* output[1];
load("this_is_data", output);
0 голосов
/ 14 февраля 2019

Вернуть указатель вместо передачи локального адреса.

char *load(char* buf_in)
{
    ...
    char *buf_out = malloc(size);
    ...
    return buf_out;
}

int main()
{
     char* output = load("this_is_data");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...