In unserem Vermächtnis C/C++ Code in denen ich zwei Versionen von UnterschriftenUnterschiede zwischen Doppel * VEC und Doppel vec []
void foo1(double *vec, int n)
und
void foo2(double vec[], int n)
Aber es gibt keinen Unterschied in der Handhabung von der Parameter vec
innerhalb der Methoden, zB:
void foo2(double vec[], int n){
for(int i=0;i<n;i++)
do_something(vec[i]);
}
gibt es einen Unterschied zwischen der erste Version (double *
) und die zweite (double ..[]
)? In welchen Situationen sollte eine Version gegenüber der anderen bevorzugt werden?
Edit: Nach dem Hinweis von @ Khaled.K Ich habe versucht zu kompilieren:
void foo(double *d, int n){}
void foo(double d[], int n){}
und bekam einen Compiler-Fehler aufgrund Neudefinition der Leere foo(double *d, int n)
. Also double *vec
und double vec[]
bedeuten das Gleiche.
Die noch offene Frage ist, welche Version wann verwendet werden sollte.
Nein, es gibt keinen Unterschied. In einem Parameter wird '[]' als '*' eingestellt. –
['char *' und 'char arr []' Unterschied] (http://stackoverflow.com/q/16677858/995714) –
@ LưuVĩnhPhúc, er möchte Unterschiede, wenn sie als Parameter an eine Funktion übergeben werden. – Haris