c множественное косвенное обращение - присвоение char** массиву char *

char** это указатель на char*, Это означает, что значение char** это адрес char*, Значение char* является адресом первого элемента в массиве символов, хранящемся в памяти.

Итак, в коде ниже:

  • char* words[3]; массив из 3 указателей на массивы символов, иначе char*,
  • char** ppc; это указатель на char*

Мой вопрос, как вы можете назначить ppc = words когда words это массив char*s.

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 ответ

В большинстве случаев массив может распадаться на указатель на первый элемент массива.

В этом примере words это массив указателей на charто есть имеет тип char *[], Элемент этого массива имеет тип char *, так ppc = words правопреемники &words[0], который имеет тип char **, чтобы ppc,

Другие вопросы по тегам