In C / C ++ ist char * arrayName [] [] ein Zeiger auf einen Zeiger auf einen Zeiger ODER ein Zeiger auf einen Zeiger?

Ich habe mehrdimensionale Arrays als Zeiger auf Zeiger verstanden, aber vielleicht irre ich mich?

Zum Beispiel, ich obwohl:

char * var = char var[]

char ** var = char* var[] oderchar var[][]

char *** var = char var[][][] oderchar* var[][] oderchar** var[]

Ist das falsch? Ich war verwirrt, weil ich in einem einfachen Lehrbuchbeispiel einen char * [] [] als char ** gesehen habe.

Ich habe das folgende Beispiel eingefügt. Kann jemand das für mich klären? Vielen Dank

/* 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;

}

Antworten auf die Frage(10)

Ihre Antwort auf die Frage