previous next Up Title Contents Index

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 parametrina 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 toteutuksesta riippuen */
	... sizeof(int)   ...   /*   -  " -                        */
	... sizeof(char)  ...   /*  Aina 1                       */
	... sizeof(Pvm_tyyppi)  /* Esim. 2+20+2 == 24 tot. riip. */
	... sizeof(pvm.kk_nimi) /*  20                           */
	... 


previous next Up Title Contents Index