Gast
#2052565
Hallo ich hab eine kurze frage:
1 | |
2 | |
3 | |
4 | |
5 | |
Ist das so richtig? Wenn nicht wie dann? Danke
|
Anzeige
|
C: unterschied *(*zgr[10]) und *(*zgr)[10]
Gast
#2052565
Hallo ich hab eine kurze frage:
Ist das so richtig? Wenn nicht wie dann? Danke
Gast
#2052614
Nein das letzte ist nicht korrekt. Das ist ein Zeiger auf einen Zeiger der auf ein int[50] Array zeigen kann. gruß Holger (1) korrekt. (2) Zeiger auf Array von Zeigern auf int. (3) Array aus Zeigern auf Zeiger auf int. @beide: ausgehend von dem Variablennamen dem Vorrang folgend von innen nach aussen auflösen. Etwaige Danksagungen für diesen Schwachfug bitte an Dennis Ritchie richten. mir der right - left Rule (Googeln!)
int *zgr[10];
*************
zgr zgr ist ein
zgr[10] zgr ist ein Array (10) von
* zgr[10] zgr ist ein Array (10) von Zeigern
int * zgr[10] zgr ist ein Array (10 von Zeigern auf int
int *(*zgr)[10];
****************
zgr zgr ist ein
zgr) zgr ist ein
*zgr) zgr ist ein Zeiger
(*zgr) zgr ist ein Zeiger
(*zgr)[10] zgr ist ein Zeiger auf ein Array
*(*zgr)[10] zgr ist ein Zeiger auf ein Array von
Zeigern
int *(*zgr)[10] zgr ist ein Zeiger auf ein Array von
Zeigern auf int
int *(*zgr[10]);
****************
zgr zgr ist ein
zgr[10] zgr ist ein Array von
zgr[10]) zgr ist ein Array von
*zgr[10]) zgr ist ein Array von Zeigern
(*zgr[10]) zgr ist ein Array von Zeigern
*(*zgr[10]) zgr ist ein Array von Zeigern auf Zeiger
int *(*zgr[10]) zgr ist ein Array von Zeigern auf Zeiger
auf int
Beim Variablennamen anfangen und nach rechts gehen (wenns geht). Ein []
wird als 'Array von' übersetzt, ein () wird als 'Funktion übersetzt.
Triffst du auf eine einzelne ), dann dreht sich die Lesereichtung um und
es geht links weiter (und umgekehrt).
A. K. schrieb: > (1) korrekt. > (2) Zeiger auf Array von Zeigern auf int. > (3) Array aus Zeigern auf Zeiger auf int. > > @beide: ausgehend von dem Variablennamen dem Vorrang folgend von innen > nach aussen auflösen. Etwaige Danksagungen für diesen Schwachfug bitte > an Dennis Ritchie richten. Danke Dennis! (Wer sowas ohne typedef schreibt ist selber schuld :-) Besonders elegant wird das, wenn es keinen Variablennamen gibt und man erst einmal rausfinden muss, wo der stünde wenn es einen gäbe. Dieses Vergnügen hat man bei Typecasts. Wie in (int *(*(*)[10])(int *zgr)). Vor vielen Jahren habe ich mal ein Tool gesehen, das die C-Notation von Datentypen in englische Prosa übersetzt. Ich hielt so etwas damals für uncool :), aber hier im Forum wäre es schon mehrfach von Nutzen gewesen. Kennt das zufälligerweise jemand und hat einen aktuellen Link? Alternativ direkt online: http://cdecl.org/ MfG Marius @Karl Heinz: @Marius: Ja, genau das meinte ich. Vielen Dank an beide! Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|