Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied, wenn eine C++-Funktion ein Array zurückgibt?
C++-Funktionen weisen bei der Rückgabe eines Arrays zwei Verhaltensweisen auf: Eine Kopie wird als Wert zurückgegeben, und Änderungen an der Kopie wirken sich nicht auf das ursprüngliche Array aus. Ein Verweis auf das ursprüngliche Array wird als Referenz zurückgegeben, und Änderungen am zurückgegebenen Array werden direkt wiedergegeben im ursprünglichen Array.
In C++ können Funktionen verschiedene Datentypen zurückgeben, einschließlich Arrays. Wenn eine Funktion ein Array zurückgibt, gibt es zwei verschiedene Verhaltensweisen:
Bei der Rückgabe eines Arrays nach Wert erstellt die Funktion eine Kopie des Arrays und gibt sie an den Aufrufer zurück. Dadurch wird eine neue Kopie des Speichers erstellt und alle an dieser Kopie vorgenommenen Änderungen wirken sich nicht auf das ursprüngliche Array aus.
Syntax:
int* foo() { int arr[] = {1, 2, 3}; return arr; }
Praktischer Fall:
int main() { int* arr = foo(); arr[0] = 10; // 更改副本值,不影响原始数组 return 0; }
Bei der Rückgabe eines Arrays per Referenz gibt die Funktion direkt eine Referenz auf das ursprüngliche Array zurück. Dadurch wird keine neue Kopie des Speichers erstellt, was bedeutet, dass alle am zurückgegebenen Array vorgenommenen Änderungen direkt im ursprünglichen Array widergespiegelt werden.
Syntax:
int* &bar() { static int arr[] = {1, 2, 3}; return arr; }
Praktischer Fall:
int main() { int* &arr = bar(); arr[0] = 10; // 更改原始数组值 return 0; }
Funktionen | Rückgabe nach Wert | Rückgabe nach. Referenz |
---|---|---|
Kopie von | Ja | Nein | zurücksenden
Änderungen am zurückgegebenen Array | haben keinen Einfluss auf das ursprüngliche Array | werden direkt im ursprünglichen Array widergespiegelt |
Speicheraufwand | Erstellen Sie eine Kopie, der Speicheraufwand ist höher | Erstellen Sie keine Kopie, Speicher Der Overhead ist geringer |
Effizienz | geringere Ausführungseffizienz | höhere Ausführungseffizienz |
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied, wenn eine C++-Funktion ein Array zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!