c 多个间接寻址 - 将字符**分配给字符*数组



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

所以在下面的代码中:

  • char* words[3]; 是一个由 3 个指向字符数组的指针组成的数组,又名 char*
  • char** ppc;是指向char*的指针

我的问题是,当wordschar*数组时,如何分配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

最新更新