Ich würde empfehlen gegen mit der []
Syntax für Funktionsparameter.
Das einzige Argument für die Verwendung von []
ist, dass es auf eine selbstdokumentierende Weise impliziert, dass der Zeiger auf mehr als eine Sache zeigen soll. Zum Beispiel:
void swap(int *x, int *y)
double average(int vals[], int n)
Aber warum ist dann char *
immer für Strings statt char []
? Ich würde lieber konsistent sein und immer *
verwenden.
Einige Leute mögen const
alles, was sie können, einschließlich Pass-by-Value-Parameter. Die Syntax für dass, wenn []
(nur in C99) unter Verwendung von weniger intuitiv und wahrscheinlich weniger bekannt:
const char *const *const words
gegen const char *const words[const]
Obwohl halte ich, dass die endgültigen const
Overkill in jedem Fall sein.
Darüber hinaus ist die Art, wie Arrays Zerfall nicht vollständig intuitiv ist. Insbesondere ist es not applied recursively (char words[][]
funktioniert nicht). Vor allem, wenn Sie anfangen, mehr Indirection werfen, verursacht die []
Syntax nur Verwirrung. IMO ist es besser, immer die Pointer-Syntax zu verwenden, anstatt vorzugeben, dass ein Array als Argument übergeben wird.
Weitere Informationen: .
Wenn Ihr Ziel Konsistenz ist, sollten Sie das Sternchen verwenden, da dies mit normalen (Nicht-Parameter-) Deklarationen übereinstimmt. Die andere Syntax sollte sterben, sie verursacht nur Verwirrung. –