C++ Zeiger vs. Arrays

C++ Zeiger

Zeiger und Arrays sind eng miteinander verwandt. Tatsächlich sind Zeiger und Arrays in vielen Fällen austauschbar. Beispielsweise kann ein Zeiger auf den Anfang eines Arrays mithilfe von Zeigerarithmetik oder Array-Indizierung auf das Array zugreifen. Betrachten Sie das folgende Programm:

Beispiel

#include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; int *ptr; // Adresse des Arrays im Zeiger ptr = var; for (int i = 0; i < MAX; i++) { cout << "var[" << i << "die Speicheradresse von ] ist"; cout << ptr << endl; cout << "var[" << i << "der Wert von ] ist"; cout << *ptr << endl; // Zur nächsten Position bewegen ptr++; } return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

var[0]的内存地址为 0x7fff59707adc
var[0] 的值为 10
var[1]的内存地址为 0x7fff59707ae0
var[1] 的值为 100
var[2]的内存地址为 0x7fff59707ae4
var[2] 的值为 200

Zeiger und Arrays sind jedoch nicht vollständig austauschbar. Betrachten Sie beispielsweise das folgende Programm:

Beispiel

#include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; for (int i = 0; i < MAX; i++) { *var = i; // Dies ist die korrekte Syntax var++; // Dies ist falsch } return 0; }

:

Da ein Array-Name einer Zeigerkonstante entspricht, können zeigerförmige Ausdrücke weiterhin verwendet werden, solange der Wert des Arrays nicht geändert wird. Zum Beispiel ist die folgende Anweisung gültig und weist var den Wert 500 zu

*(var + 2) = 500;

Die obige Anweisung ist gültig und lässt sich erfolgreich kompilieren, weil var nicht geändert wurde.

C++ Zeiger

Weitere Erweiterungen