Was sind die Unterschiede zwischen diesen Arten von Zeigern? [Duplikat]

8

Ich programmierte einen Code in C ++, als ich versehentlich Klammern an meinen Zeiger anlegte und meine Programmausgabe änderte.

Da ich neu in der Programmierung bin, wollte ich den Unterschied zwischen diesen Arten von Zeigern wissen:

%Vor%

Ich habe in meinem Lehrbuch gelesen, dass Arrays auch eine Art von Zeigern sind.

    
Lovely Princess 22.02.2016, 08:36
quelle

2 Antworten

15
%Vor%

Ein Array ist in erster Linie ein Array, unabhängig davon, um welchen Typ es sich handelt. Nach dem Anwenden von Zeiger * wissen wir, dass A ein Array von int-Zeigern ist.

%Vor%

Durch die Verwendung von Klammern hat Zeiger * in diesem Fall Vorrang vor dem Array []. Dann ist A in erster Linie ein Zeiger, egal auf was es zeigt. Nach dem Anwenden von array [] wissen wir, dass A ein Zeiger auf ein Array von int ist.

%Vor%

Klammern ändern keine Vorrangreihenfolge, die sich auf das Array [] auswirken würde. Daher würde das Entfernen von Klammern int* A[n] gleich dem ersten Fall ergeben.

%Vor%

Nein. Array ist eine Datenstruktur, die einen Speicherpool zuweist und die Daten sequentiell speichert, wobei Pointer auf einen bestimmten Index im Speicherpool zeigt und auf die an diesem Speicherort gespeicherten Daten verweist.

    
Imran Mirza 22.02.2016, 08:37
quelle
2

Dieser Artikel enthält gute Beispiele zum Lesen von Typdeklarationen in C. Ссылка

Grundsätzlich können Sie Typen nach folgender Priorität auslesen:

  1. (oft geklammert) Innerster Typ

  2. Ganz rechts stehende Typen (Hauptsächlich Array-Typen: [])

  3. Am weitesten links stehende Typen, mit Ausnahme der äußersten (meist Zeigertypen: *)

  4. Äußere Typen (meist primitive Typen: int, char ..)

Zum Beispiel können die von Ihnen dargestellten Typen wie folgt ausgelesen werden:

%Vor%

Grundsätzlich sind der erste und der dritte Typ identisch.

    
Gwangmu Lee 22.02.2016 09:18
quelle

Tags und Links