Heim >Backend-Entwicklung >C++ >Zeiger verstehen
In Technologiestudiengängen gibt es Konzepte und Fächer, die den Studierenden im Allgemeinen Angst machen. Einige der Hauptbeispiele sind Fächer im Zusammenhang mit objektorientierter Programmierung und Analysis, ein weiteres Beispiel sind einige abstraktere Grundbegriffe Strukturen wie Zeiger, hauptsächlich in C, sind das Thema dieses Artikels.
Im Gegensatz zu uns kennen Computer bestimmte Informationen nicht anhand einer „Beschriftung“ oder eines „Namens“, sondern anhand der Adresse, an der sich diese Daten im Speicher befinden. Wir können uns den Speicher als eine Reihe von „Zellen“ vorstellen, die eine Reihe von Bits enthalten, die 0 oder 1 speichern, und jede Zelle ist einer bestimmten Adresse zugeordnet, an der sie einige Informationen speichert, damit von der Maschine ausgeführte Programme auf diese Daten zugreifen und sie manipulieren können es.
Wenn man bedenkt, dass ein Programm, um Daten nutzen zu können, seine Adresse im Speicher kennen muss, können wir uns das Konzept eines Zeigers vorstellen. Der Zeiger ist eine Variable, die auf andere Daten „zeigt“. Es ist, als wäre er ein Speicherplatz im Speicher, der die Adresse einer anderen Variablen oder Informationen speichern soll, damit diese manipuliert werden können.
Aber jetzt stellt sich die Frage: Was nützt ein Zeiger? Der Zeiger ermöglicht einige komplexere Operationen, die den Speicher betreffen, wie z. B. die dynamische Zuweisung mit Malloc oder die Erstellung komplexerer Datenstrukturen usw. Darüber hinaus gibt es einige Details, die den Schülern zunächst nicht so leicht auffallen, wie zum Beispiel die Tatsache, dass der Name eines Vektors ein Zeiger ist. Richtig, ein Vektor ist nichts anderes als ein „fester Zeiger“, der auf eine bestimmte Position im Speicher zeigt und den wir mithilfe des Index je nach Bedarf manipulieren können.
Eine andere Verwendung ist die Manipulation von Daten durch Referenz, zum Beispiel: Übergeben eines Arrays als Parameter an eine andere Funktion, wodurch das ursprüngliche Array geändert werden kann, anstatt dass der übergebene Wert oder das übergebene Objekt nur eine Kopie ist, was beispielsweise in Javascript vorkommt, wo Es gibt kein Konzept für einen Zeiger (zumindest nicht explizit), zum Beispiel:
#include <stdio.h> int vet [5] ={10,20,3,4}; void somadez(int * ref){ for(int i=0;i<5;i++) ref[i]+=10; } int main () { somadez(vet); for(int i=0;i<5;i++) printf("%i\n",vet[i]); return 0; } saída: 20 30 13 14 note que quem foi alterado foi o vetor original
Eine weitere nicht so offensichtliche Verwendung von Zeigern, diesmal für objektorientierte Sprachen, wo wir beispielsweise dynamische Objekte erstellen und die Arbeit mit Vererbung und Polymorphismus erleichtern können.
Wir haben dieses Beispiel unten mit C++:
#include <iostream> using namespace std; class Animal{ public: virtual void som(); }; class Cachorro : public Animal{ public: void som(){ cout << "auau"; } }; int main () { Animal * ClasseBase; Cachorro ClasseFilha; ClasseBase = &ClasseFilha; ClasseBase->som(); //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada. return 0; }
Das obige ist der detaillierte Inhalt vonZeiger verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!