Ukazatel (programování): Porovnání verzí
Smazaný obsah Přidaný obsah
článek pointerová aritmetika přidán sem do pointerů viz. stejně jako na en wiki, tam taky mají jen redirect z pointer aritmethic na pointer |
zrušeny zbytečné nadpisy, trochu rozšířen příklad |
||
Řádek 12:
Tento způsob práce s pamětí (respektive segmentace paměti) se používal v dobách 16-[[bit]]ových aplikací pro [[Disk Operating System|DOS]], dnes je ale považován za zastaralý a na architektuře [[x86|x86-32]] se používá výhradně 32-[[bit]]ových ukazatelů, respektive na 64-bitových architekturách se používá 64-bitových ukazatelů.
==
Pointerová aritmetika definuje možné výpočetní operace s
=== [[C (programovací jazyk)|Jazyk C]] ===▼
int i; // definice proměnné i datového typu int▼
int *p; // definice proměnné p, ukazatele na datový typ int▼
p = &i; // hodnota pointeru je nastavena na adresu proměnné i▼
*p = 3; // do paměti na adresu odkazovanou ukazatelem p se uloží hodnota 3▼
Možné operace s ukazateli jsou buď přírůstek adresy P
▲Pointerová aritmetika definuje možné výpočetní operace s [[Ukazatel (informatika)|ukazateli (pointery)]]. [[Adresa (programování)|Adresovatelnou]] jednotkou ukazatele může být 1[[byte]] nebo 1[[slovo (paměťová jednotka)|slovo]], ale nejčastěji ve [[VPJ|vyšších programovacích jazycích]] je adresovatelnou jednotkou ukazatele velikost [[datový typ|datového typu]], který ukazatel adresuje.
Adresy ukazatelů se kterými
▲přírůstek adresy P anebo indexace prvků v [[Pole_(informatika)|poli]] na jehož počátek ukazuje P, adresa se změní o ''n'' v násobcích velikosti [[datový typ|datového typu]]
▲ int i; // definice proměnné i datového typu int
int a[3]; // definice proměnné a, pole typu int se třemi prvky
▲ int *p; // definice proměnné p, ukazatele na datový typ int
▲ p = &i; // hodnota pointeru je nastavena na adresu proměnné i
▲ *p = 3; // do paměti na adresu odkazovanou ukazatelem p se uloží hodnota 3
p = &(a[2]); // hodnota pointeru je nastavena na prvek pole a s indexem 2
p = p - 2; // hodnota pointeru je nastavena na prvek pole a s indexem 0 (tj. první prvek pole)
*p = 5; // do paměti na adresu odkazovanou p se uloží hodnota 5 (tedy první prvek pole má tuto hodnotu)
▲Adresy ukazatelů se kterými provádíme pointerovou aritmetiku se musí nacházet ve stejném adresovém prostoru (např. poli), jinak nemusí být výsledek operace definován.
[[Kategorie:Programování]]
|