2016-04-10 4 views
2

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

+0

standardmäßig es Pass von Wert ist, wenn Sie einen Zeiger auf die Struktur übergeben. –

+0

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

Antwort

1

Sie übergeben es nach Wert. Alles in einer Struktur wird kopiert.

+0

Können Sie ein Beispiel geben? – bengbeng

+4

@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. –

+1

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. –

3

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.

3

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; 
} 

Online demo

Verwandte Themen