2016-03-21 1 views
1

Wenn ich die folgende Zeile kompiliere, erhält sie "inkompatible Typen beim Zuweisen zum Typ 'char * [80]' vom Typ ' char ** '"Fehler. Sowohl 'nw' als auch 'source' sind Sätze (vom Satzstrukturtyp). Diese Frage unterscheidet sich von anderen sinces es handelt sich um zweidimensionale Arrays, die woanders nicht diskutiert wurden.inkompatible Typen beim Zuweisen von 'char * [80]' vom Typ 'char **' Fehler

nw.sentence = source->sentence; 

Der Satzbau Typ ist:

typedef struct { 
    char *sentence[MAX_LINE_LENGTH]; 
} sentence; 

Dank.

Antwort

0

Angenommen, Sie die Erklärung

int *x; 

haben Das bedeutet, dass x Typ int * hat, mit anderen Worten ein Zeiger auf eine int. In der gleichen Logik, die Deklaration

char *sentence[MAX_LINE_LENGTH]; 

bedeutet, dass jedes Element von sentence[MAX_LINE_LENGTH] (die eine Anordnung von Elementen ist MAX_LINE_LENGTH) Typ char *, mit anderen Worten ist ein Zeiger auf eine Zeichenkette hat.

Als Schlussfolgerung zeigt jedes Element char *sentence[MAX_LINE_LENGTH] auf eine Zeichenfolge. Dies unterscheidet sich von der Deklaration

char ** sentence; 

als das letzte ein Zeiger auf Zeiger auf Zeichenfolge ist.