Das Problem, das ich versuche, Array char arr[6] = {"1","2",etc.}
zu einer Funktion übergeben, die Parameter wie diese void foo(char* &arr,...)
und es funktioniert nicht. Kann mir das bitte jemand erklären?Weitergabe nach Referenzproblem?
Antwort
char arr[6]
ist ein Array.
char* &arr
ist ein (n lvalue) Verweis auf einen Zeiger.
Nun, da das Argument nicht vom richtigen Typ ist, muss es konvertiert werden. Ein Array verfällt implizit (Verfall ist eine Art Umwandlung) in einen Zeiger auf das erste Element.
Aber dieser verfallene Zeiger ist ein temporärer (ein rvalue). Nicht-konstante lvalue-Referenzen können sich nicht auf rvalues beziehen, daher wäre es schlecht formuliert, foo
mit einem Array-Argument aufzurufen.
Sie können eine Zeigervariable erstellen; das kann zu foo
geben werden:
char* ptr = arr;
foo(ptr, ...);
Die Funktion dann diesen Zeiger ändern kann (das heißt, es zu einem anderen Objekt char
macht Punkt), da die Referenz nicht-const ist.
PS. Es ist etwas sehr falsch mit der Initialisierung Ihres Arrays. "1"
und "2"
sind keine char
Objekte.
- 1. Referenzproblem mit Tomcat?
- 2. VS 2003 Referenzproblem
- 3. Root-Aggregat-Referenzproblem
- 4. Weitergabe von http.ResponseWriter nach Wert oder Referenz?
- 5. Warum verursacht die @ Async-Annotation ein zirkuläres Referenzproblem?
- 6. Referenzproblem beim Aktualisieren von JSON-Daten in Javascript
- 7. Weitergabe von Klasseninformationen C#
- 8. Weitergabe des Benutzernamens nach Facebook an eine andere Aktivität -Xamarin
- 9. Weitergabe von Integern beliebiger Größe von Prolog nach C
- 10. Weitergabe von cv :: Mat von C++ nach C# (verwaltet)
- 11. 2D Dynamische Array-Zuweisung und Weitergabe nach Referenz in C
- 12. Weitergabe von Daten von Nginx nach Django Methode
- 13. Zweifel über die Weitergabe
- 14. Xcode-Weitergabe von Daten
- 15. Google Cloud Storage-Weitergabe
- 16. Vaadin Weitergabe Daten anzeigen
- 17. Weitergabe der geerbten Klasse
- 18. TTNavigation Weitergabe von Daten
- 19. Unable Werte Weitergabe
- 20. Weitergabe von benutzerdefinierten Ereignissen
- 21. Weitergabe von .config-Einstellungen
- 22. Weitergabe von Variablennamen als String
- 23. Objekt Weitergabe in Chrom-Erweiterung
- 24. AngularJS/SignalR Weitergabe von Daten
- 25. Weitergabe von Daten zwischen Aktivitäten
- 26. Tiles1 - Weitergabe Attribute Abschnitte jsp
- 27. ASP.NET Weitergabe von Windows-Authentifizierungsinformationen
- 28. Weitergabe von Daten über Shader
- 29. Weitergabe von Informationen über Formulare
- 30. Stack und Weitergabe per Referenz
Weil ein Array kein Zeiger ist. Und ein Zeiger ist kein Array – StoryTeller
Diese Fragen sind [hier] beantwortet (https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282). – nwp
Mögliches Duplikat von [Übergeben eines Arrays durch Referenz] (https://stackoverflow.com/questions/5724171/passing-an-array-by-reference) – AMA