Unterschied zwischen Array und Zeiger

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 11 Kann 2024
Anonim
K05 Zeiger und Arrays
Video: K05 Zeiger und Arrays

Inhalt


Es gibt eine enge Beziehung zwischen Array und Zeiger. Der Zeiger kann verwendet werden, um auf die Array-Elemente zuzugreifen, und der Zugriff auf das gesamte Array wird durch Zeigerarithmetik beschleunigt. Es gibt einen grundlegenden Unterschied zwischen einem Zeiger und einem Array, dh ein Array ist eine Sammlung von Variablen ähnlichen Datentyps, während der Zeiger eine Variable ist, die die Adresse einer anderen Variablen speichert. Es gibt einige andere Unterschiede zwischen einem Array und einem Zeiger, die weiter unten in der Vergleichstabelle erläutert werden.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichArrayZeiger
Erklärung// In C ++
Typ var_name;
// In Java.
Typ var-name;
var_name = neuer Typ;
// In C ++
Typ * var_name;
ArbeitenSpeichert den Wert der Variablen des homogenen Datentyps.Speichern Sie die Adresse einer anderen Variablen desselben Datentyps wie der Zeigervariablen-Datentyp.
GenerationEin Array von Zeigern kann generiert werden.Ein Zeiger auf ein Array kann generiert werden.
Java-UnterstützungUnterstützen Sie das Konzept des Arrays.Unterstützt keine Zeiger.
LagerEin normales Array speichert Werte von Variablen und ein Zeigerarray speichert die Adresse von Variablen.Zeiger dienen speziell zum Speichern der Adresse von Variablen.
KapazitätIn einem Array kann die Anzahl der Elemente gespeichert werden, die in der Größe der Arrayvariablen angegeben sind. Eine Zeigervariable kann jeweils nur die Adresse einer Variablen speichern.


Definition von Array

Ein Array ist die Auflistung der Elemente desselben Datentyps, und alle diese Elemente werden durch einen allgemeinen Namen bezeichnet, der der Name einer Arrayvariablen ist. Auf ein bestimmtes Array-Element kann zugegriffen werden, indem auf den spezifischen Index des Arrays zugegriffen wird, in dem dieses Element gespeichert ist. Arrays können eindimensionale Arrays, zweidimensionale Arrays oder mehrdimensionale Arrays sein. Ein Array von Zeigern kann ebenfalls erzeugt werden, d. H. Ein Array, das alle Variablen als Zeigervariable enthält. In C ++ werden die Arrays statisch zugewiesen, während in Java die Arrays dynamisch zugewiesen werden.

// In C ++ geben Sie var_name; // In Java. Typ var-name; var_name = neuer Typ;

Hier bezeichnet 'type' den Datentyp einer Arrayvariablen, 'var_name' bezeichnet den Namen der Arrayvariablen, 'size' bezeichnet die Kapazität der Arrayvariablen, dh wie viele Elemente von 'type' in dieser Arrayvariablen gespeichert werden können . Es gibt zwei Methoden, um auf ein Array zuzugreifen: die erste „Zeigerarithmetik“ und die zweite „Array-Indizierung“, von denen die „Zeigerarithmetik“ schneller ist.


// Zugreifen mit Zeigerarithmetik Void display_array (int * S) {while (* s) {cout (<< "value is" << * s); * s ++; }}

Die Verwendung der Zeigerarithmetik ist schneller als die Array-Indizierung, d. H. Der Zugriff auf Array-Variablen erfolgt über den Index. Wenn Sie ein Array von Zeigern an eine Funktion übergeben müssen, können Sie dieselbe Methode verwenden, mit der Sie ein normales Array übergeben, d. H. Die Funktion mit dem Namen des Arrays ohne Index direkt aufrufen.

Lassen Sie es uns mit dem Beispiel verstehen

// Das Array von Zeigern deklarieren. int * p;

Hier zeigt es, dass ‘p’ ein Array vom Typ Integer ist und die Adresse von 10 Variablen vom Typ Integer enthält. Übergeben wir das obige Zeigerarray in eine Funktionsanzeige ().

Anzeige (p); // Funktionsanzeige aufrufen. void display (int * d) {// Funktion, die das Zeigerarray empfängt. für (int i = 0; i <10; i ++) {cout << ("index" <

Diese Funktion zeigt die in den Variablen vorhandenen Werte an, deren Adressen nacheinander in diesem Zeigerarray gespeichert werden.

Definition von Zeiger

Der Zeiger ist eine Variable, die die Speicheradresse einer anderen Variablen enthält. Der Datentyp sowohl der Zeigervariablen als auch der Variablen, deren Adresse einer Zeigervariablen zugewiesen wird, muss identisch sein. Die Zeigervariable ist wie folgt deklariert.

// Deklaration in C ++ Typ * Name;

Hier ist "Typ" ein Datentyp, "Name" der Name der Zeigervariable. Der Typ definiert, welche Art von Variablenadresse in der Zeigervariable gespeichert werden kann. Beispielsweise speichert der Ganzzahlzeiger die Adresse der Ganzzahlvariablen. Es gibt zwei Zeigeroperatoren: "*" und "&". Der Operator "*" gibt den Wert an der Adresse zurück, die in der Variablen gespeichert ist, gefolgt von dem Zeichen "*". Der Operator "&" gibt die Adresse der Variablen gefolgt vom Zeichen "&" zurück.

// zum Beispiel int b = 10 int a = & b; // Hier wird die Adresse von b in der Variablen a gespeichert. // Lässt die Adresse von b 2000 sein, also jetzt a = 2000. int c = * a; // Hier gibt die Integer-Zeigervariable * a den Wert zurück, der sich an der in einer .ie gespeicherten Adresse befindet. c = 10.

Es gibt nur zwei arithmetische Operatoren, die Sie für Zeiger verwenden können, d. H. Addition und Subtraktion. Wenn Sie eine Integer-Zeigervariable inkrementieren, wird sie um die Größe des Datentyps inkrementiert, d. H. Um 2 Byte, da es sich um einen Integer-Zeiger handelt. Beim Inkrementieren muss sie auf die nächste Integer-Variable zeigen. Gleiches gilt für Dekrement.

// p ist ein ganzzahliger Zeiger mit dem Wert 2000. p ++; // jetzt p = 2002. p--; // jetzt enthält p wieder 2000, dekrementiert um zwei Bytes.

  1. In einem Array werden Variablen mit ähnlichen Datentypen gespeichert, und die Datentypen der Variablen müssen mit dem Typ des Arrays übereinstimmen. Andererseits speichert die Zeigervariable die Adresse einer Variablen eines Typs, der einem Typ eines Zeigervariablentyps ähnlich ist.
  2. Wir können ein Array von Zeigern erzeugen, d. H. Ein Array, dessen Variablen die Zeigervariablen sind. Auf der anderen Seite können wir einen Zeiger erstellen, der auf ein Array zeigt.
  3. Java unterstützt Array, aber keine Zeiger.
  4. Eine Array-Größe bestimmt die Anzahl der Variablen, die gespeichert werden können. Eine Zeigervariable kann nur die Adresse einer Variablen speichern

Hinweis:

Java unterstützt keine Zeiger oder vermeidet sie strikt.

Fazit:

Wenn wir Datenelemente mit ähnlichem Datentyp bearbeiten müssen, können wir anstatt separat an Variablen zu arbeiten, ein Array dieser Variablen mit ähnlichem Datentyp erstellen und dann bearbeiten. Zeiger sind für einige Programme erforderlich, sie bieten eine enorme Leistung, aber wenn ein Zeiger einen falschen Wert enthält, ist er leider der am schwierigsten zu findende Fehler.