Gibt es einen Unterschied zwischen zwei Funktionen in c?
Kein Unterschied hier. Beide werden vom Compiler als interpretiert, da Arrays in einen Zeiger auf ihr erstes Element konvertiert werden, wenn sie als Funktionsparameter verwendet werden.
Wie groß wird das erste Array in der f1-Funktion sein?
Genau genommen gibt es hier kein Array. Sein einziger Zeiger auf eine int
. Wenn Sie sizeof(arr)
verwenden, erhalten Sie den Wert sizeof(int *)
.
Die Array-Größe in Parametern wird benötigt, wenn der Typ des Parameters ein Zeiger auf ein Array ist. In diesem Fall müssen Sie die Größe des Arrays angeben, da jede Größe den Zeiger auf einen anderen Typ zeigt.
void f3(int (*arr)[10]); // Expects a pointer to an array of 10 int
Es gibt keinen Unterschied, außer dass es im zweiten Fall etwas selbstdokumentierend ist. 'arr' zerfällt entweder in einen Zeiger. –
Nun, Sie können einige Tests durchführen, versuchen Sie, "printf (" sizeof arr ==% d \ n ", sizeof arr);' und sehen was passiert. –