Array übergeben werden by-value oder by reference?

Weiß ich sicher, dass

function(int *a); function(int a[]);

in C sind die gleichen, function(int a[]) übersetzt werden in Funktion(int *a)

int *a = malloc(20);
int b[] = {1,2,3,4,5};

Diese beiden sind nicht das gleiche, das erste ist ein Zeiger, der zweite ist ein array. Was passiert, wenn ich call-Funktion(b)?(function(int *a))
Ich weiß, dass b auf dem Stapel, so wie Sie ist übergeben, die Funktion?

Zweitens, strings:

char *c1 = "string";
char c2 [] = "string";

In diesem Fall weiß ich nicht, wo ist c1, und ich nehme an, dass c2 auf dem Stapel.
Angenommen, die Funktion ist jetzt: die Funktion(char *c), welche der Funktion(char c[]), was passiert, wenn ich call-Funktion(c1) und die Funktion(c2), die strings übergeben werden, per Referenz oder Wert?

Ja, ich habe alles, was, die Sie erwähnt, aber jetzt versuche ich, um zu sehen, C durch die Montage der Brille.
Kompilieren Sie dann mit gcc -Wall -fverbose-asm -S yourfile.c dann schauen Sie in yourfile.s

InformationsquelleAutor AR89 | 2012-11-19

Schreibe einen Kommentar