Perché preferire sizeof (elemento) su sizeof (TYPE) per calcolare il numero di elementi in un array?

15

Sto leggendo "programmazione C di King K.N" e ho trovato la seguente dichiarazione:

We discussed using the expression sizeof(a)/sizeof(a[0]) to calculate the number of elements in an array. The expression sizeof(a)/sizeof(t), where t is the type of a's elements, would also work, but it is considered an inferior technique.

Perché è considerata una tecnica inferiore?

    
posta Higgs 06.07.2015 - 23:42
fonte

1 risposta

25

sizeof(a)/sizeof(t) codifica esplicitamente il tipo nell'espressione. Ora hai il tipo specificato in più posizioni, senza il supporto del compilatore per assicurarti di utilizzare lo stesso tipo. Quindi, se cambi il tipo base dell'array, ma non nell'espressione di conteggio (completamente separata), il bingo: il tuo codice verrà compilato bene, ma il conteggio degli elementi sarà errato. Se sei fortunato il tuo programma andrà in crash, ma in caso contrario funzionerà quasi completamente correttamente, ma ogni tanto si comporterà in modo totalmente strano.

sizeof(a)/sizeof(a[0]) è garantito corretto, richiede solo il nome dell'array. Cambia il tipo e stai bene; cambia il nome dell'array e il compilatore si lamenterà. Nessun pensiero richiesto: ci piace questo tipo di programmazione.

    
risposta data 07.07.2015 - 02:38
fonte

Leggi altre domande sui tag