Toinen usein kätevämpi tapa on käyttää käännösaikaista sizeof - operaattoria, joka palauttaa muuttujan tai tyypin tarvitseman muistitilan. Esimerkiksi
char jono[80]; int koko; ... koko = sizeof(jono);
sijoittaisi muuttujalle koko arvon 80.
Voisimme siis kirjoittaa kutsuja:
char jono[80]; ... lue_jono(jono,sizeof(jono)); ... f_lue_jono(f,jono,sizeof(jono)); ... kopioi_jono(jono,sizeof(jono),"Kissa"); cin.getline(jono,sizeof(jono));
sizeof - operaattorille voidaan antaa parametrinä myös tyypin nimi:
typedef struct {
int pv;
char kk_nimi[20];
int vv;
} Pvm_tyyppi;
...
int vuosi;
Pvm_tyyppi pvm;
...
... sizeof(vuosi) ... /* Esim 2 tai nykyisin 4 toteutuksesta riippuen */
... sizeof(int) ... /* - " - */
... sizeof(char) ... /* Aina 1 */
... sizeof(Pvm_tyyppi) /* Esim. 4+20+4 == 28 tot. riip. */
... sizeof(pvm.kk_nimi) /* 20 */
...