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

Wann sollte ich Referenzen vs. Zeiger in C verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-13 12:26:02209Durchsuche

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 vermeidet den Aufwand des Kopierens.

Übergabe per Zeiger:

Übergabe per Zeiger 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 benötigen um einen Nullzeiger zu übergeben.
  • Sie müssen den Zeiger selbst ändern, nicht sein Ziel (z. B. dem Zeiger einen neuen Wert zuweisen).

Best Practices:

Als allgemeine Regel gilt, wann immer möglich, die Weitergabe als Referenz vorzuziehen. 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;
}

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!

Stellungnahme:
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