Unterschied zwischen Zeiger und Array

Zeiger gegen Array

Ein Zeiger ist ein Datentyp, der einen Verweis auf eine Speicherstelle enthält (d. H. Eine Zeigervariable speichert eine Adresse einer Speicherstelle, in der einige Daten gespeichert sind). Arrays sind die am häufigsten verwendete Datenstruktur zum Speichern einer Sammlung von Elementen. Die meisten Programmiersprachen bieten Methoden zum einfachen Deklarieren von Arrays und Zugriffselementen in den Arrays.

Was ist ein Zeiger??

Ein Zeiger ist ein Datentyp, der eine Adresse eines Speicherplatzes speichert, in dem einige Daten gespeichert sind. Mit anderen Worten, ein Zeiger hält eine Referenz auf eine Speicherstelle. Der Zugriff auf die Daten, die in dem vom Zeiger referenzierten Speicherplatz gespeichert sind, wird als Dereferenzierung bezeichnet. Bei wiederholten Vorgängen wie dem Durchlaufen von Bäumen / Strings, Tabellensuchen usw. würde die Verwendung von Zeigern die Leistung verbessern. Das ist deshalb so, weil das Dereferenzieren und Kopieren von Zeigern billiger ist als das eigentliche Kopieren und Zugreifen auf die Daten, auf die die Zeiger zeigen. Ein Nullzeiger ist ein Zeiger, der auf nichts zeigt. In Java würde der Zugriff auf einen Nullzeiger eine Ausnahme erzeugen, die als NullPointerException bezeichnet wird.

Was ist ein Array??

In Abbildung 1 ist ein Code dargestellt, der normalerweise zum Deklarieren und Zuweisen von Werten zu einem Array verwendet wird. Abbildung 2 zeigt, wie ein Array im Speicher aussehen würde.

Int-Werte [5];

Werte [0] = 100;

Werte [1] = 101;

Werte [2] = 102;

Werte [3] = 103;

Werte [4] = 104;

Abbildung 1: Code zum Deklarieren und Zuweisen von Werten zu einem Array


100 101 102 103 104
Index: 0 1 2 3 4

Abbildung 2: Array im Speicher gespeichert

Der obige Code definiert ein Array, in dem 5 Ganzzahlen gespeichert werden können, auf das über die Indizes 0 bis 4 zugegriffen wird. Eine wichtige Eigenschaft eines Arrays besteht darin, dass das gesamte Array als einzelner Speicherblock zugewiesen wird und jedes Element seinen eigenen Platz im Array erhält . Sobald ein Array definiert ist, wird seine Größe festgelegt. Wenn Sie sich zum Zeitpunkt des Kompilierens nicht sicher sind, wie groß das Array ist, müssen Sie ein ausreichend großes Array definieren, um sich auf der sicheren Seite zu befinden. In den meisten Fällen werden wir jedoch weniger Elemente verwenden, als wir zugewiesen haben. Eine beträchtliche Menge an Speicher wird also tatsächlich verschwendet. Wenn andererseits das „ausreichend große Array“ nicht groß genug ist, würde das Programm abstürzen.

Was ist der Unterschied zwischen Zeigern und Arrays??

Ein Zeiger ist ein Datentyp, der eine Adresse eines Speicherorts speichert, in dem einige Daten gespeichert sind, während Arrays die am häufigsten verwendete Datenstruktur zum Speichern einer Sammlung von Elementen sind. In der C-Programmiersprache erfolgt die Indexierung des Arrays unter Verwendung der Zeigerarithmetik (d. H. Das i-te Element des Arrays x wäre äquivalent zu * (x + i)). Daher kann in C ein Satz von Zeigern, die auf einen Satz von aufeinanderfolgenden Speicherstellen zeigen, als Array betrachtet werden. Außerdem gibt es einen Unterschied in der Art und Weise, wie der Operator size auf Zeiger und Arrays arbeitet. Wenn der Operator sizeof auf ein Array angewendet wird, gibt er die gesamte Größe des Arrays zurück. Wenn Sie ihn auf einen Zeiger anwenden, wird nur die Größe des Zeigers zurückgegeben.