Kann ein zweidimensionales Array in C ohne explizite Größe initialisiert werden?

Ich habe eine Frage zu zweidimensionalen Arrays in C. Ich weiß jetzt (aus direkter Compiler-Erfahrung), dass ich ein solches Array nicht analog zu eindimensionalen Arrays wie diesem initialisieren kann:

int multi_array[][] = {
  {1,2,3,4,5},
  {10,20,30,40,50},
  {100,200,300,400,500}
};

> compiler output:

gcc -o arrays arrays.c
arrays.c: In function ‘main’:
arrays.c:8:9: error: array type has incomplete element type

Die am besten geeignete Lösung besteht darin, die Anzahl der Spalten explizit wie folgt anzugeben:

int multi_array[][5] = {
  {1,2,3,4,5},
  {10,20,30,40,50},
  {100,200,300,400,500}
};

Meine Frage ist: Kann es ordentlich gemacht werdenohne Geben Sie die Nummer explizit an (woraus der Compiler sich doch selbst schließen kann)? Ich spreche nicht davon, es manuell zu konstruierenmalloc oder etwas, aber eher etwas in der Nähe dessen, was ich versucht habe. Kann jemand, der sich mit C-Compilern auskennt, aus einer einfachen Perspektive erklären, warum mein erster Versuch nicht funktioniert?

Ich habe einfach verwendetgcc ohne nicht standardmäßige Optionen zum Kompilieren des Codes.

Vielen Dank

Antworten auf die Frage(5)

Ihre Antwort auf die Frage