Referenční ukazatele
Referenční ukazatele jsou nejjednoduššími ukazateli a vyžadují nejmenší množství zpracování zástupnými procedurami klienta. Když klientský program předá ukazatel odkazu na vzdálenou proceduru, odkaz ukazatel vždy obsahuje adresu platného bloku paměti. Po dokončení vzdáleného postupu bude stále odkazovat na stejný blok paměti. Tyto ukazatele se používají hlavně k implementaci referenční sémantiky a umožňují [ven] parametry v jazyce C.
V následujícím příkladu se hodnota ukazatele během volání nezmění, i když obsah dat na adrese označené ukazatelem se může změnit.
Referenční ukazatel má následující charakteristiky:
- Vždy odkazuje na platné úložiště a nikdy nemá hodnotu NULL.
- Během hovoru se nikdy nemění a vždy odkazuje na stejné úložiště před voláním a po něm.
- Data vrácená ze vzdálené procedury se zapíšou do existujícího úložiště.
- K úložišti odkazovaným ukazatelem nelze přistupovat žádným jiným ukazatelem ani jiným názvem funkce.
Pomocí atributu [ref] určete referenční ukazatele v definicích rozhraní, jak je znázorněno v následujícím příkladu.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
Tento příklad definuje parametr pChar jako ukazatel na jeden znak, nikoli pole znaků. Jedná se o parametr [out] a referenční ukazatel, který odkazuje na paměť, kterou rutina RemoteFn serveru vyplní daty.