char ***在C中是什么意思?

时间:2019-06-01 03:09:33

标签: c

我需要帮助来了解char ***的含义以及如何初始化char ***类型的变量。

例如,如果有一个函数可以读取文件的行,同时跟踪行数并打印出每行及其相应的数字:

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

在这种情况下char ***代表什么?我将如何初始化变量行?

2 个答案:

答案 0 :(得分:2)

这是指向char的指针。在这种情况下,很有可能是 output 参数。由于C按值传递参数,所以输出参数需要附加级别indirection。也就是说,read_lines函数想要给调用者一个char**,并通过输出参数来实现这一点,它需要将一个 pointer 指向一个{{1} }。调用它所需要做的可能就是:

char**

另请参阅C Programming: malloc() inside another function

答案 1 :(得分:1)

  

我需要帮助来了解char ***的含义...

char***类型是一个指针。指向char **的指针。 p as pointer to pointer to pointer to char

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.