2016-07-20 12 views

Antwort

5

Dies ist wahrscheinlich eine dup, aber ich werde einen Schuss sowieso.

Es gibt keinen Unterschied zwischen int arr[3] ={0,}; und int arr[3] ={0};.

Ref: C11 6.7.9:

initializer: 
     assignment-expression 
     { initializer-list } 
     { initializer-list , } 

Beide Formen der initializer Listen initializers berücksichtigt. Das Formular mit dem Komma am Ende wird von vielen bevorzugt, da es das Umordnen oder Hinzufügen von Elementen zur Liste während der Codepflege vereinfacht.

int arr[3] ={0,}; 

eine Anordnung von drei Elementen deklariert und initialisiert das erste Element auf 0. Wenn Sie eine partielle Initialisierung tun, wird der Rest des Arrays automatisch mit Nullen initialisiert.

Ref.-Nr. 6.7.9 C11:

Wenn weniger Initialisierungen in einer spange beigefügte Liste sind, als es sind Elemente oder Teile eines Aggregats, oder weniger Zeichen in einem Stringliteral verwendeten einen Array von bekannter Größe zu initialisieren als dort sind Elemente im Array, der Rest des Aggregats soll implizit gleich initialisiert werden wie Objekte mit statischem Speicher Dauer.

+2

Die Frage ist ein vollständiges Duplikat von [Array-Initialisierung C] (http://stackoverflow.com/questions/16414622/array-initialization-c). Das heißt, ich mag deine Antwort besser als die dort gegebenen. – dxiv

+0

Der in der Antwort [SO 7043372] (http://stackoverflow.com/q/7043372) erwähnte dup ist eine C++ - Frage, während dies für C gilt. Es ist vorzuziehen, C-Fragen für andere C-Fragen zu duplizieren. –

Verwandte Themen