Nein, es gibt keinen Unterschied zwischen beiden Deklarationen:
%Vor%Siehe den relevanten Abschnitt der C-Norm (Hervorhebung von mir):
(C99, 6.7.8p21) "Wenn in einer Liste mit geschweiften Klammern weniger Initialisierer vorhanden sind als Elemente oder Mitglieder eines Aggregats, werden oder weniger Zeichen in einem Zeichenfolgeliteral zum Initialisieren von Array mit bekannter Größe, als es Elemente im Array gibt, der Rest des Aggregats soll implizit genauso initialisiert werden wie Objekte mit statischer Speicherdauer. "
In diesem Fall gibt es keinen Unterschied, beide initialisieren alle Slots des Arrays auf 0. Im Allgemeinen funktioniert ""
nur für char
Arrays (mit oder ohne Modifikationen wie const
oder unsigned
), aber {0}
funktioniert für Arrays aller numerischen Typen.
In Abschnitt 6.7.9 des Standards (n1570) wird in Punkt 21
gelesenWenn in einer Liste mit geschweiften Klammern weniger Initialisierer vorhanden sind als Elemente oder Elemente eines Aggregats oder weniger Zeichen in einem Zeichenfolgenliteral, das zum Initialisieren eines bekannten Arrays verwendet wird Größe als es Elemente in der Anordnung gibt, soll der Rest des Aggregats sein implizit genauso initialisiert wie Objekte mit statischer Speicherdauer.
, damit sogar ""
das komplette Array initialisiert.
Das Ergebnis beider Ausdrücke ist dasselbe: eine leere Zeichenfolge. Der erste ist jedoch expliziter und damit besser lesbar.
Es gibt keinen Unterschied. Sie können auch selbst sehen! Das ist die zuverlässigste Antwort, die Sie bekommen können. Verwenden Sie einfach einen Debugger. Führen Sie die zwei Zeilen aus und vergleichen Sie das Ergebnis. Aber Sie sollten die Arrays umbenennen. Ich benutze gcc / gdb und kompiliere den folgenden Code
%Vor%über gcc -g test.c und dann gdb a.out aufrufen. In gdb gebe ich
ein %Vor%Die letzte Anweisung wird von gdb mit folgender Ausgabe beantwortet:
%Vor%Ich fahre fort und gebe "print t" ein und bekomme entsprechend
%Vor%Das sagt mir, dass beide Anweisungen mit meinem Compiler der Wahl zum selben Ergebnis führen.
Tags und Links c