Wenn Sie eine Struktur an eine Funktion übergeben, ist es Wert übergeben (ähnlich regulären Variablen, wo der Wert geklont wird), oder ist es durch Referenz übergeben (ähnlich Arrays wo die tatsächlichen Variable wird übergeben)? Kannst du ein Beispiel geben.Übergeben Sie ein Struct zu einer Funktion
Antwort
Sie übergeben es nach Wert. Alles in einer Struktur wird kopiert.
Können Sie ein Beispiel geben? – bengbeng
@bengbeng schreibe dein eigenes Beispiel. Sie wissen, wie man eine Funktion macht. Verwenden Sie 'struct S' als Parameter anstelle von' int' oder was auch immer. –
Struct ist so implementiert, dass ein Block eines Speichers zum Speichern seiner Mitglieder zugewiesen wird. Wenn Sie eine Struktur als Argument übergeben, können Sie daran denken, diesen Block eines Speichers in eine Funktion zu kopieren. –
In C wird alles nach Wert übergeben, selbst das Überschreiten von Zeigern ist nach Wert. Und Sie können nie die Werte des aktuellen Parameters ändern.
Das ist von K & R übrigens. Und ich empfehle dieses Buch zu lesen. Speichert Ihnen viele Fragen, die Sie möglicherweise in der Zukunft stellen.
Eine Struktur wird durch Wert übergeben:
struct S {
int a,b;
};
void f(struct S s) {
printf("%d\n", s.a+s.b);
s.a = 0; /* change of a in local copy of struct */
}
int main(void) {
struct S x = { 12,13};
f(x);
printf ("Unchanged a: %d\n",x.a);
return 0;
}
- 1. Wie übergeben Sie einen Zeiger auf ein Struct-Array zu einer Funktion in Java mit JNA?
- 2. Wie ein Struct-Array an meine Struktur-Funktion übergeben werden
- 3. Speicherung struct Variablen von Funktion zu lokalem struct variable
- 4. Wie übergeben Sie zusätzliche Argumente zu einer vorhandenen Callback-Funktion
- 5. Übergeben einer Ellipse zu einer anderen Variadic-Funktion
- 6. Übergeben Sie die Template-Klasse zu einer Funktion
- 7. Übergeben Inkrement/Dekrement-Operator zu einer Funktion
- 8. C - Funktion innerhalb struct
- 9. Übergeben Sie separaten Wert in Template-Funktion
- 10. XML zu C struct und C struct zu XML
- 11. C# zu C++ - Prozess mit WM_COPYDATA übergeben struct mit Zeichenfolgen
- 12. Funktion für C++ struct
- 13. Übergeben Sie ein Array oder separate Variablen zu einer Funktion - PHP?
- 14. Übergeben Sie ein Array als Funktion Argument aus einer Funktion, die es als Argument in C
- 15. Brauchen Sie Hilfe, Daten von einer Funktion zu einer anderen zu übergeben
- 16. Iterate durch ein Struct?
- 17. Ein Argument als Attribut in einer Funktion übergeben?
- 18. Kann keinen Wert von einer Funktion an ein Textfeld übergeben
- 19. Übergeben Sie ein Array zu Jade-Rendering
- 20. Übergeben Sie ein Argument zu Fraktaltransformator-Transformationsmethode
- 21. Übergeben Sie ein PowerShell-Array an eine .NET-Funktion
- 22. Können Sie ein Argument an sigaction übergeben?
- 23. Parameter in einer Funktion innerhalb einer anderen Funktion übergeben?
- 24. Übergeben Sie Methode zu einer Variablen
- 25. Wert von einer Funktion in ein Eingabefeld übergeben
- 26. Erste Fehler bei dem Versuch, ein Array von Objekt zu einer Funktion zu übergeben
- 27. Passing struct
- 28. ein Array verwenden Argumente an eine Funktion zu übergeben
- 29. Wie ein Lambda in einer Funktion mit einem Capture übergeben?
- 30. AngularJS: Klicken Sie und übergeben Sie ein ganzes Objekt von einer Seite zu einer anderen Seite
standardmäßig es Pass von Wert ist, wenn Sie einen Zeiger auf die Struktur übergeben. –
Eine Struktur, die an eine Funktion übergeben wird, wird immer die Funktion als Zeiger auf die Struktur erhalten, eigentlich einen geklonten Zeiger auf die Struktur. Hinweis: Arrays werden NICHT an eine Funktion übergeben, sondern es wird eine Adresse des Arrays übergeben, eigentlich ein Klon der Adresse des Arrays. – user3629249