Stavo cercando di eseguire il debug del mio codice in un'altra funzione quando sono incappato in questo comportamento "strano".Matrice non azzerata sulla dichiarazione
#include <stdio.h>
#define MAX 20
int main(void) {
int matrix[MAX][MAX] = {{0}};
return 0;
}
Se ho impostato un punto di interruzione sulla linea return 0;
e guardo le variabili locali con Code :: Blocks la matrice non è del tutto pieno di zeri. La prima riga è, ma il resto dell'array contiene solo spazzatura casuale.
so di poter fare un doppio for
ciclo per inizializzare tutto manualmente a zero, ma non era lo standard C
dovrebbe colmare questa matrice a zero con il {{0}}
inizializzatore?
Forse perché è stata una lunga giornata e sono stanco, ma avrei giurato che lo sapevo.
ho provato a compilare con i diversi standard (con il Code :: Blocks bundle gcc
compilatore): -std=c89
, -std=c99
, std=c11
ma è lo stesso.
Qualche idea di cosa c'è che non va? Potresti spiegarmelo?
MODIFICA: Mi sto chiedendo in particolare l'inizializzatore {{0}}
.
Ho sempre pensato che avrebbe riempito tutte le colonne e tutte le righe a zero.
EDIT 2: Sono preoccupato specificatamente con Code::Blocks
e il pacchetto GCC
. Altri commenti dicono che il codice funziona su diverse piattaforme. Ma perché non dovrebbe funzionare per me? :/
Grazie.
bene questa risposta dice che lo stai facendo bene http://stackoverflow.com/a/1688758/1339987 – djechlin
Utilizzo 2- le matrici dimensionali sono qualcosa che le persone amano fare a scuola, ma in pratica spesso causano più problemi di quanti ne valga la pena. Perché non usare solo un array monodimensionale, dove si presume che i primi elementi MAX siano la prima riga, i successivi MAX elementi sono la seconda riga, ecc. dereferenziazione per matrice [riga * NCOLS + col]; In tal caso, è possibile inizializzarlo più facilmente come semplicemente matrice [NCOLS * NROWS] = {0}; – Dmitri
@Dmitri perché devi assumere il primo Gli elementi MAX sono la prima riga, la matematica, la deferenza con più matematica - Credo che tu abbia risposto alla tua domanda: P – djechlin