0

Ich implementierte ein multidimensionales Array und mit Zeigern und Testen der Richtigkeit der Adresszuweisung.Auch obwohl das Programm lief perfekt und alle Adressen waren die gleichen wie ich erwartet.Aber es gab a Kompilierung Warnung [Warning] excess elements in array initializer .Can jemand erklären, über die warning.The Code unten ist ....Compilation Warning.Excess Elemente im Array Initialisierer

#include<stdio.h> 
    int main(){ 
    int c[3][2][2] = {{{2,5},{7,9},{3,4},{6,1},{0,8},{11,13}}}; 
    printf("%d %d %d %d",c,*c,c[0],&c[0][0]); 
    return 0; 
} 

die Fehler Zusammenfassung ist wie dieser

 In function 'main': 
3 2 [Warning] excess elements in array initializer 
3 2 [Warning] (near initialization for 'c[0]') 
3 2 [Warning] excess elements in array initializer 
3 2 [Warning] (near initialization for 'c[0]') 
3 2 [Warning] excess elements in array initializer 
3 2 [Warning] (near initialization for 'c[0]') 
3 2 [Warning] excess elements in array initializer 
3 2 [Warning] (near initialization for 'c[0]') 

Antwort

2

Sie haben drei Paare von einem Paar int s. Die Initialisierung sollte wie folgt aussehen:

int c[3][2][2] = {{{2,5},{7,9}},{{3,4},{6,1}},{{0,8},{11,13}}}; 
     3    ^   ^   ^
     2   ^ ^
      2  ^^   
+0

Arbeitete !! Aber kannst du die Warnung erklären? –

+0

@SaiKiranUppu Die Klammern waren für die angegebenen Abmessungen nicht korrekt. Das ist es. – 2501

+0

Können Sie bitte erklären, ich kann nicht herausfinden, was Ihre Antwort ist –

1

das ist nicht ein dreidimensionales Array ist. Du hast eine Klammer vergessen!

int c[3][2][2] = {{{2,5},{7,9}},{{3,4},{6,1}},{{0,8},{11,13}}}; 

Vielleicht Dinge umformatieren, um es deutlicher zu machen:

int c[3][2][2] = { 
    { {2,5}, {7,9} }, 
    { {3,4}, {6,1} }, 
    { {0,8}, {11,13} } 
}; 
+0

Ihr neuer Initialisierer ist für ein 2x3x2 Array, nicht 3x2x2. – user2357112

+0

@ user2357112 Danke, es scheint, ich kann nicht zählen. –

+0

Yaa @ user2357112 ist korrekt –