Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

17.3.1 sizeof palauttaa muuttujaan varaaman tilan

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                                          */
	... 


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys