Как я могу передать переменную функции * char? - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь передать этот указатель char *line;, используя rle_code(&line); для этой функции:

char *rle_encode(char *line)
{

    return line;
}

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 28 января 2019

line уже неявно указывает на первый элемент строки в line.Когда вы передаете &line, вы передаете указатель на указатель на первый элемент в вашей строке.

Если вы хотите четко указать, что вы передаете, вы можете передать &line[0] - этоаналогично передаче line, но более наглядно иллюстрирует, что вы проходите.

Посмотрите, поможет ли изучение вывода этого кода понять уровни косвенности:

char *line = "Hello World";
char **p = &line;
printf("%p\n", (void *)line);
printf("%p\n", (void *)&line[0]);
printf("%p\n", (void *)&line);
printf("%p\n", (void *)p);
printf("%s\n", (char *)*p);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...