Является ли char * arrayName [] [] в C / C ++ указателем на указатель на указатель ИЛИ указателем на указатель?
Я понимал многомерные массивы как указатели на указатели, но, возможно, я ошибаюсь?
Например, я, хотя:
char * var
= char var[]
char ** var
= char* var[]
или жеchar var[][]
char *** var
= char var[][][]
или жеchar* var[][]
или жеchar** var[]
Это неверно? Я был сбит с толку, потому что я увидел char * [] [], брошенный как char ** в простом примере из учебника.
Я вставил пример ниже. Кто-нибудь может прояснить это для меня? Спасибо!
/* A simple dictionary. */
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/* list of words and meanings */
char *dic[][40] = {
"atlas", "A volume of maps.",
"car", "A motorized vehicle.",
"telephone", "A communication device.",
"airplane", "A flying machine.",
"", "" /* null terminate the list */
};
int main(void)
{
char word[80], ch;
char **p;
do {
puts("\nEnter word: ");
scanf("%s", word);
p = (char **)dic;
/* find matching word and print its meaning */
do {
if(!strcmp(*p, word)) {
puts("Meaning:");
puts(*(p+1));
break;
}
if(!strcmp(*p, word)) break;
p = p + 2; /* advance through the list */
} while(*p);
if(!*p) puts("Word not in dictionary.");
printf("Another? (y/n): ");
scanf(" %c%*c", &ch);
} while(toupper(ch) != 'N');
return 0;
}