c多个间接 - 将char **分配给char *数组

时间:2017-10-09 12:48:14

标签: c pointers dereference multiple-indirection

char**是指向char*的指针。这意味着char**的值是char*的地址。 char*的值是存储在内存中的字符数组中第一个元素的地址。

所以在下面的代码中:

  • char* words[3];是一个包含3个字符数组指针的数组,即char*
  • char** ppc;是指向char*
  • 的指针

我的问题是,当ppc = wordswords的数组时,如何指定char*

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;

}

1 个答案:

答案 0 :(得分:2)

在大多数情况下,数组可以衰减指向数组第一个元素的指针。

在此示例中,words是指向char的指针数组,即它具有类型char *[]。此数组的元素的类型为char *,因此ppc = words会将&words[0] char **分配给ppc