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
,