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


Q: Since overrunning an array can lead to catastrophic failures, why doesn’t C++ provide bounds  checking on array operations? A



Download 11,33 Mb.
Pdf ko'rish
bet61/194
Sana12.03.2022
Hajmi11,33 Mb.
#491693
1   ...   57   58   59   60   61   62   63   64   ...   194
Bog'liq
C A Beginner\'s Guide 2nd Edition (2003)

Q:
Since overrunning an array can lead to catastrophic failures, why doesn’t C++ provide bounds 
checking on array operations?
A:
C++ was designed to allow professional programmers to create the fastest, most efficient code 
possible. Toward this end, very little runtime error checking is included, because it slows (often 
dramatically) the execution of a program. Instead, C++ expects you, the programmer, to be responsible 
enough to prevent array overruns in the first place, and to add appropriate error checking on your own 



C++ A Beginner’s Guide by Herbert Schildt 
as needed. Also, it is possible for you to define array types of your own that perform bounds checking if 
your program actually requires this feature.
If an array overrun occurs during an assignment operation, memory that is being used for other 
purposes, such as holding other variables, might be overwritten. If an array overrun occurs when data is 
being read, then invalid data will corrupt the program. Either way, as the programmer, it is your job both 
to ensure that all arrays are large enough to hold what the program will put in them, and to provide 
bounds checking whenever necessary.
CRITICAL SKILL 4.2: Two-Dimensional Arrays
C++ allows multidimensional arrays. The simplest form of the multidimensional array is the 
two-dimensional array. A two-dimensional array is, in essence, a list of one-dimensional arrays. To 
declare a two-dimensional integer array twoD of size 10,20, you would write
int twoD[10][20];
Pay careful attention to the declaration. Unlike some other computer languages, which use commas to 
separate the array dimensions, C++ places each dimension in its own set of brackets. Similarly, to access 
an element, specify the indices within their own set of brackets. For example, for point 3,5 of array 
twoD, you would use twoD[3][5].
In the next example, a two-dimensional array is loaded with the numbers 1 through 12.



C++ A Beginner’s Guide by Herbert Schildt 
In this example, nums[0][0] will have the value 1, nums[0][1] the value 2, nums[0][2] the value 3, and so 
on. The value of nums[2][3] will be 12. Conceptually, the array will look like that shown here:
Two-dimensional arrays are stored in a row-column matrix, where the first index indicates the row and 
the second indicates the column. This means that when array elements are accessed in the order in 
which they are actually stored in memory, the right index changes faster than the left.
You should remember that storage for all array elements is determined at compile time. Also, the 
memory used to hold an array is required the entire time that the array is in existence. In the case of a 
two-dimensional array, you can use this formula to determine the number of bytes of memory that are 
needed:
bytes = number of rows × number of columns × number of bytes in type
Therefore, assuming four-byte integers, an integer array with dimensions 10,5 would have 10×5×4 (or 
200) bytes allocated.



Download 11,33 Mb.

Do'stlaringiz bilan baham:
1   ...   57   58   59   60   61   62   63   64   ...   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