Unterschied zwischen char (*MyChar)[20] und char *MyChar[20]
-
Aber was ist den jetzt der Unterschied zwischen
char (*MyChar)[20] und char *MyChar[20] ??????????ß
-
*MyChar[20] ist ein Zeiger auf 20 chars, während (*MyChar)[20] eben 20 char-Zeiger sind.
-
Theston schrieb:
*MyChar[20] ist ein Zeiger auf 20 chars, während (*MyChar)[20] eben 20 char-Zeiger sind.
Genau falsch rum.
-
d'oh
sicher?
-
Ja
-
stimmt, habs gerade getestet, scheint mir trotzdem unintuitiv...
-
Ist es auch, aber die Deklarationssyntax basiert nicht auf Intuition, sondern auf dem Prinzip, dass die Deklaration der Benutzung ähneln sollte. Angenommen, A ist ein Array aus Zeigern auf char. Dann ist A[0] ein Zeiger auf ein char. Setze ich jetzt ein * davor, bekomme ich das char, auf das verwiesen wird: *A[0] (im Zweifel Vorrangtabellen checken: [] bindet stärker als *). Nach dem angesprochenen Prinzip sieht die Deklaration also so aus: char *A[n_elemente];
-
Wie heist jetzt die Definition von einem Array der 3 Elemente a' 80 Zeichen hat?
-
... und wie weise ich einen Wert (Text) zu?
-
char a[3][80];
-
Wird der Array jetzt als Referenz oder als Zeiger übergeben? Ich habe (wenn ich Zeiger benötig habe) es immer so gemacht:
char **czNameArray = new char*[nAnzahlName]; char *Name; Name = "Test; czNameArray[0] = Name;
Leider kann ich hier nicht die Länge der Namen auf 80 setzten, oder?