C++: a beginner's Guide, Second Edition


CRITICAL SKILL 4.12: Multiple Indirection



Download 11,33 Mb.
Pdf ko'rish
bet71/194
Sana12.03.2022
Hajmi11,33 Mb.
#491693
1   ...   67   68   69   70   71   72   73   74   ...   194
Bog'liq
C A Beginner\'s Guide 2nd Edition (2003)

CRITICAL SKILL 4.12: Multiple Indirection

A pointer to a pointer is a form of multiple indirection, or a chain of pointers. Consider Figure 4-2. As you 


can see, in the case of a normal pointer, the value of the pointer is the address of a value. In the case of 
a pointer to a pointer, the first pointer contains the address of the second pointer, which points to the 
location that contains the desired value.
Multiple indirection can be carried on to whatever extent desired, but there are few cases where more 
than a pointer to a pointer is needed, or, indeed, even wise to use. Excessive indirection is difficult to 
follow and prone to conceptual errors.


41 
C++ A Beginner’s Guide by Herbert Schildt 
A variable that is a pointer to a pointer must be declared as such. This is done by placing an additional 
asterisk in front of its name. For example, this declaration tells the compiler that balance is a pointer to 
a pointer of type int:
int **balance;
It is important to understand that balance is not a pointer to an integer, but rather a pointer to an int 
pointer. When a target value is indirectly pointed to by a pointer to a pointer, accessing that value 
requires that the asterisk operator be applied twice, as is shown in this short example:
Ask the Expert
Q:
Given the power of pointers, I can see that their misuse could easily cause extensive damage to 
a program. Do you have any tips on avoiding pointer errors?
A:
First, make sure that pointer variables are initialized before using them. That is, make sure that a 
pointer actually points to something before you attempt to use it! Second, make sure that the type of 
the object to which a pointer points is the same as the base type of pointer. Third, don’t perform 
operations through null pointers. Recall that a null pointer indicates that the pointer points nowhere. 
Finally, don’t cast pointers “just to make your code compile.” Usually, pointer mismatch errors indicate 
that you are thinking about something incorrectly. Casting one type of pointer into another is usually 
needed only in unusual circumstances.
Here, p is declared as a pointer to an integer, and q as a pointer to a pointer to an integer. The cout 
statement will print the number 10 on the screen.



Download 11,33 Mb.

Do'stlaringiz bilan baham:
1   ...   67   68   69   70   71   72   73   74   ...   194




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish