【发布时间】:2018-03-20 16:32:52
【问题描述】:
char** 是指向char* 的指针。这意味着char** 的值是char* 的地址。 char* 的值是存储在内存中的字符数组中第一个元素的地址。
所以在下面的代码中:
-
char* words[3];是一个包含 3 个指向字符数组的指针的数组,也就是char*。 -
char** ppc;是指向char*的指针
我的问题是当words 是char*s 的数组时,如何分配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("%s\n", words[i]);
}
ppc = words;
return 0;
}
【问题讨论】:
-
老式的衰减到指针。
-
如果在需要指针时使用数组,则数组可以衰减 指向其第一个元素的指针。在您的情况下,当您使用
ppc = words时,编译器生成的实际上是ppc = &words[0]。 -
啊谢谢你我应该明白的。
-
任何 C 指针都可以指向单个项目或项目数组。您的帖子表明您以某种方式认为
char *总是指向一个数组,而char **从来没有。这种区分是错误的。任何一个都可以指向一个数组,但都不需要。 -
@TomKarzes,谢谢汤姆,是的,我写的很糟糕。你的意思是
char*可以指向一个char或chars 的数组?而char**可以指向单个char*或char**s 的数组。对吗?
标签: c pointers dereference multiple-indirection