Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
n:*ciPtr+3;
*ciPtr*:2;
*(int*)ciPtr*:2;
//OK:takisamefektjakn:n+3;
//Błąd:niemożnazmienićobiektu,doktórego
//odwołujesięwskaźnikdotypuconstint.
//OK:Jawneprzekształceniewskaźnikawe
//wskaźnikdotypuintniebędącegostałą.
Przedostaniainstrukcjawtymprzykładzieobrazuje,dlaczegowskaźnikidotypówze
specyfikatoremconstczasemnazywanewskaźnikamitylkodoodczytu:chociażmoż-
namodyfikowaćwartościwskaźników,toniemożnaichwykorzystywaćdomodyfikacji
obiektów,którewskazują.
Stałewskaźnikapustego
Staławskaźnikapustego(nullpointer)jeststałącałkowitąowartości0lubstałąwartoś-
ciącałkowitą0rzutowanąjakowskaźnikdotypu
void
.Makro
NULL
jestzdefiniowane
wplikachnagłówkowychstdlib.h,stdio.hiinnychjakowskaźnikpusty.Następującyprzy-
kładobrazuje,jakwykorzystaćmakro
NULL
jakostałejwskaźnikowejdozainicjalizowania
wskaźników,anieliczbycałkowitejzero,czyznakunull:
#include<stdlib.h>
long*lPtr:NULL;
//InicjalizacjawartościąNULL:wskaźnik
//niejestgotowydoużycia.
/*...przeprowadzanetuoperacjemogąprzypisaćadresobiektudolPtr...
*/
if(lPtr!:NULL)
{
/*...użyjlPtrtylkojeślijegowartośćzostałazmienionaijestżna
odNULL...*/
}
Gdyprzekształcamystałąwskaźnikapustegowinnytypwskaźnika,wynikjestnazywany
wskaźnikiempustym.Wzorzecbitowywskaźnikapustegoniezawszejestzerem.Jednakże,
gdyprzyrównamywskaźnikpustydozera,dowartości
NULL
lubdoinnegowskaźnika
pustego,wynikiembędziezawsze
true
.Natomiastodwrotnie,porównaniewskaźnikapu-
stegododowolnegoprawidłowegowskaźnikadoobiektulubfunkcjizawszezwróci
false
.
Przekształceniamiędzywskaźnikiemitypamicałkowitymi
Wskaźnikmożnazawszejawnieprzekształcićwtypcałkowityiodwrotnie.Wyniktakiego
przekształceniazależyodkompilatoraipowinienbyćspójnyzestrukturąadresowania
wsystemie,naktórymjesturuchomionyprogram.Przekształceniamiędzywskaźnikiem
atypamicałkowitymimogąbyćprzydatnewprogramowaniusystemówiniezbędne,
Przekształceniatypów
Przekształceniatypówniearytmetycznych
|
69