char**
是指向char*
的指针。这意味着char**
的值是char*
的地址。char*
的值是存储在内存中的字符数组中第一个元素的地址。
所以在下面的代码中:
-
char* words[3];
是一个由 3 个指向字符数组的指针组成的数组,又名char*
。 -
char** ppc;
是指向char*
的指针
我的问题是,当words
是char*
数组时,如何分配ppc = words
。
char* words[LENGTH];
int main(int argc, char **argv) {
char** ppc;
words[0] = "one";
words[1] = "two";
words[2] = "three";
for (int i =0; i < LENGTH; i++) {
printf("%sn", words[i]);
}
ppc = words;
return 0;
}
在大多数上下文中,数组可以衰减到指向数组第一个元素的指针。
在这个例子中,words
是一个指向char
的指针数组,即它有类型 char *[]
。 这个数组的一个元素有类型 char *
,所以ppc = words
将类型为 char **
的 &words[0]
分配给 ppc
。