Ich weiß, dass Arrays durch Verweis in einem Funktionsaufruf übergeben werden, aber was passiert, wenn Sie nur ein Array-Element, z. func(ar[0])
. Wird arg[0]
als Wert oder als Referenz übergeben?Werden Array-Elemente auch nach Wert oder Verweis übergeben?
Antwort
Arrays sind nicht durch Bezug sie Zerfall als Zeiger, wenn sie als Funktionsargument oder in einem Ausdruck verwendet bestanden, mit der Ausnahme als Operand zum sizeof
Operator. Daher empfängt eine Funktion einen Zeiger auf das erste Element des Arrays, unabhängig davon, wie das Argument im Funktionsprototyp definiert ist, als Zeiger oder als Array.
Wenn Sie ein Array-Element übergeben, wird es als Wert übergeben, es sei denn, dieses Array-Element ist ein Array selbst. In diesem Fall wird ein Zeiger auf das erste Element übergeben.
@ AndrésRivero: können Sie bitte auf das graue Häkchen unter der Antwort klicken, um es als akzeptiert zu markieren? – chqrlie
Welcher Array-Typ auch immer verwendet wird, wird anstelle eines Zeigers an dieses Element übergeben.
int a[2];
a[0] =5;
a[1] =6;
func1(a[0]); // passes int to func1
func2(&a[1]); // passes pointer to int
func1(int z)...
func2(int * z)...
- 1. Werden diese Argumente in Python nach Wert oder Verweis übergeben?
- 2. Werden ILists nach Wert übergeben?
- 3. Erhalten anonyme Methoden, die an Aktionen übergeben werden, Daten nach Wert oder Verweis?
- 4. Verarbeiten von Daten nach Verweis oder nach Wert in Python
- 5. .NET-Parameter übergeben - durch Verweis v/s nach Wert
- 6. Übergabe von C++ - Zeichenfolgen nach Wert oder Verweis
- 7. Werden Objekte in PHP nach Wert oder Referenz übergeben?
- 8. Übergabe von Argumenten nach Wert oder Verweis in Objective C
- 9. In reactjs, Requisiten werden nach Wert übergeben oder als Referenz übergeben?
- 10. übergeben Wert durch Verweis auf C++
- 11. Automatisch eine Klasse nach Wert oder Verweis in Abhängigkeit von ihrer Größe übergeben
- 12. Werden Arrays per Referenz oder Wert in PHP übergeben?
- 13. Jquery: Verweis nach Klasse oder Selektor
- 14. Pass Std :: Chrono :: Dauer nach Wert oder durch Verweis auf const?
- 15. Werden ColdFusion-Objekte als Referenz oder Wert übergeben?
- 16. Wie erzwinge Python3 nach Wert übergeben?
- 17. Kann ich zwingen `const` durch Verweis übergeben (auch bekannt als der fehlenden` in` Parameter)
- 18. Wie Verweis auf Combobox übergeben?
- 19. Eine allgemeine kurze Anleitung zum Übergeben von Methodenparametern nach ref oder nach Wert (C#)?
- 20. Wird Ado.net zu einer gespeicherten Prozedur nur den Wert oder auch den Typ übergeben?
- 21. Wird eine Zeichenfolge an eine Funktion übergeben, die nach Wert kopiert oder als Referenz übergeben wird?
- 22. Übergeben Sie eine Robotervariable durch Verweis auf eine Python-Funktion
- 23. Wie Vorlage Wert je nach Modell Param Wert übergeben?
- 24. Übergeben von Referenztypen nach Wert in C#
- 25. Zeiger Argument durch Verweis unter C übergeben?
- 26. Verweis auf einen Dictionary-Wert
- 27. Wie Variable Verweis auf Observable-Abonnement übergeben
- 28. Wie durch Verweis in JNI übergeben?
- 29. Weitergabe von http.ResponseWriter nach Wert oder Referenz?
- 30. Sind Kanäle durch Verweis übergeben implizit
hängt davon ab, ob es ein Array ist oder nicht. Ein größeres Codebeispiel würde helfen –
Arrays werden nicht als Referenz übergeben. Ein Array-Ausdruck zerfällt jedoch in einen Zeiger auf sein erstes Element, der üblicherweise an Funktionen übergeben wird. Alles in C wird nach Wert übergeben. –
@KerrekSB Arrays werden durch Verweis in C. [Siehe hier] (https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference) zur Definition von "pass by reference" übergeben. Ein Zeiger entspricht der Definition von [Verweis] (https://en.wikipedia.org/wiki/Reference_ (computer_science)). –