Hledejte v chronologicky řazené databázi studijních materiálů (starší / novější příspěvky).

20. Operátor přetypování, operátor získání adresy a velikosti typu.

Operátor přetypování(zkopírováno z otázky č. 3):
I když se při neshodách typů provádí implicitní přetypování, někdy potřebujeme explicitně přetypovat jeden typ na jiný. To provedeme pomocí operátoru přetypování. Zápis vypadá tak, že před samotný výraz, který chceme přetypovat, uvedeme v kulatých závorkách jméno nového typu.

int a=5, b=3;
double c;
c = a / (double)b; /*Pokud bychom nepoužili přetypování, provedlo by se celočíselné dělení. Pro vynucení dělení reálného musíme hodnotu výrazu b přetypovat na double. */

Operátor získání adresy - Referenční operátor &:
Abychom mohli do ukazatelové proměnné přiřadit hodnotu (nějakou adresu), musíme ji nejprve někde získat. K tomu nám může posloužit referenční operátor '&'. Jeho zapsáním před identifikátor proměnné získáme adresu paměti, kde je tato proměnná uložena. Tuto adresu pak můžeme přiřadit nějaké ukazatelové proměnné.

Příklad:

char *p, c;

c = 12;
p = &c;
// p nyní ukazuje na proměnnou c

Operátor velikosti typu - Operátor sizeof :
Tento operátor slouží ke zjišťování velikosti svého operandu. Existují dva typy operandů, na které můžeme operátor sizeof aplikovat. Je to buď identifikátor některého datového typu:

sizeof( identifikátor_datového_typu )
nebo libovolný výraz:
sizeof výraz

V případě, že operandem bude identifikátor některého datového typu (musí být uveden v závorkách), je výsledkem vyhodnocení velikost, jakou by v paměti zabíral objekt (např. proměnná) tohoto typu. Množina použitelných typů, na které lze sizeof aplikovat, není nijak omezena a je možné použít tento operátor i na uživatelsky definované typy.

Příklad:

sizeof(int) //velikost int
sizeof(int*) //velikost ukazatele na int
sizeof(int [10]) //velikost pole deseti intových položek
sizeof(struct {int x; char a;}) //velikost zadané struktury

Druhý případ, kdy operátor sizeof použijeme na výraz, je podobný. Operátor v tomto případě vrací velikost paměti, jaká je potřeba k uložení výsledku vyhodnocení předaného výrazu. Tedy, je-li výsledkem vyhodnocení výrazu hodnota typu int, pak operátor sizeof, aplikovaný na tento výraz, vrací velikost datového typu int.

Žádné komentáře:

Okomentovat