Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Smerniky - pravda alebo nepravda?

Pokud by to Delphi umělo, asi by to taky posunulo o 16 Byte. Alespoň u PWideChar posun o jeden znak (+1) znamená posun o 2 byte.
Stále to ale neodpovídá na mou (řečnickou) otázku. Pokud by jsi výše uvedený kód přepsal do C, jaký by byl obsah i2^ po provedení

i2 := i1 + 4;
?
Rozlišujme použití v řetězcích (resp. polích), kde známe "souseda", a použití na samostatných proměnných, které mohou sousedit s čímkoliv.

Pozn. Já netvrdím, že tato konstrukce (přičítání/odečítání hodnoty k adrese) nemá opodstatnění. Pro kompilátor je ale v mnoha případech obtížné (ne-li nemožné) určit datový typ, na jaký bude adresa po této operaci ukazovat, což je pro Pascal, jakožto jazyk s přísnou typovou kontrolou, nepřijatelné.

Pozn2. Konstrukci přičítání/odečítání k/od adresy lze i v Delphi implementovat pomocí přetypování, ale v Pascalu se na to hledí jako na "nečisté" programování.
var p: pointer;
begin
p := Pointer(Integer(p) + 16);
end;

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny