Что означает char *** в C? - PullRequest
0 голосов
/ 01 июня 2019

Мне нужна помощь, чтобы понять, что означает char *** и как инициализировать переменную типа char ***.

Например, если есть функция, которая читает строки файла, отслеживая количество строк и распечатывая каждую строку с соответствующим номером:

void read_lines(FILE* fp, char*** lines, int* num_lines){}

Что будет представлять символ *** в этом случае и как мне инициализировать переменные строки?

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

Мне нужна помощь, чтобы понять, что означает символ *** ...

Тип char*** является указателем. Указатель на char **. p в качестве указателя на указатель на указатель на символ

char*** p;

... и как мне инициализировать переменную типа char ***.

char*** p1 = NULL;  // Initialize p with the null pointer constant.

char *q[] = { "one", "two", "three" };
char*** p2 = &q;  // Initialize p2 with the address of q

char ***p3 = malloc(sizeof *p3);  // Allocate memory to p3.  Enough for 1 `char **`.
....
free(p3); // free memory when done.
2 голосов
/ 01 июня 2019

Это указатель на указатель на указатель на- char.В этом случае очень вероятно, что это будет output параметр.Поскольку C передает аргументы по значению, для выходных параметров требуется дополнительный уровень косвенность .То есть функция read_lines хочет присвоить вызывающей стороне char**, а для достижения этого через выходной параметр ей необходимо взять указатель на char**.Вероятно, все, что вам нужно сделать для его вызова:

char** lines = null;
int num_lines;
read_lines(fp, &lines, &num_lines);

Также см. C Программирование: malloc () внутри другой функции .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...