Heim > Backend-Entwicklung > C++ > Wann sollte ich Referenzen vs. Zeiger in C verwenden?

Wann sollte ich Referenzen vs. Zeiger in C verwenden?

Linda Hamilton
Freigeben: 2024-11-13 12:26:02
Original
262 Leute haben es durchsucht

When Should I Use References vs. Pointers in C  ?

Referenzübergabe vs. Zeiger in C

In C kann es ein verwirrendes Thema sein, zu verstehen, wann Referenzen und Zeiger verwendet werden sollten. In diesem Artikel werden die Nuancen der Referenz- und Zeigerübergabe untersucht und praktische Richtlinien bereitgestellt.

Referenzübergabe:

Die Referenzübergabe wird empfohlen, wenn Folgendes erforderlich ist:

  • Ändern Sie den tatsächlichen Wert der übergebenen Variablen.
  • Übergeben Sie komplexe Objekte (z. B. Zeichenfolgen, Vektoren) effizient und vermeiden Sie den Aufwand des Kopierens.

Übergabe eines Zeigers:

Die Übergabe eines Zeigers ist erforderlich, wenn:

  • Sie können ein temporäres Objekt nicht als Referenz übergeben (da eine Referenz an ein vorhandenes Objekt gebunden sein muss). ).
  • Sie müssen einen Nullzeiger übergeben.
  • Sie müssen den Zeiger selbst ändern, nicht sein Ziel (z. B. dem Zeiger einen neuen Wert zuweisen).

Best Practices:

Als allgemeine Regel sollten Sie, wann immer möglich, lieber eine Referenz angeben. Wenn Sie jedoch mit Literalen, Nullzeigern oder Situationen arbeiten, in denen Sie den Zeiger selbst ändern müssen, übergeben Sie ihn per Zeiger.

Beispiel:

Der bereitgestellte Codeausschnitt ist erfolgreich ein Zeiger auf einen dynamisch zugewiesenen Vektor einer Karte. Dies ist ein gültiger Ansatz, da wir sowohl einen neuen Vektor erstellen als auch ihn als Referenz an die Karte übergeben müssen. Durch die Verwendung von Zeigern vermeiden wir die Notwendigkeit, den gesamten Vektor zu kopieren.

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <tr1/memory>
#include <algorithm>
using namespace std;
using namespace std::tr1;

int main(){
        map<string, shared_ptr<vector<string>>> adjacencyMap;
        vector<string>* myFriends = new vector<string>();
        myFriends->push_back(string("a"));
        myFriends->push_back(string("v"));
        myFriends->push_back(string("g"));
        adjacencyMap["s"] = shared_ptr<vector<string>>(myFriends);
        return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWann sollte ich Referenzen vs. Zeiger in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage