C++ за 21 день седьмое издание



Download 1,38 Mb.
bet126/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   122   123   124   125   126   127   128   129   ...   437
Bog'liq
word1

" integers" « endl;




  1. for(int Index = 0; Index < InputNums; ++Index)




  1. {




  1. cout « "Enter number " « Index « ": " ;




  1. cin » * (pNumbers + Index);




  1. }



18



  1. cout « "Displaying all numbers input: " « endl;




  1. for(int Index = 0, int* pCopy = pNumbers;




  1. cout « * (pCopy++) « " ";





  1. cout « endl;








  1. // указатель больше не используется? Освободить память




  1. delete[] pNumbers;








  1. return 0;





Динамическое распределение памяти

181



Результат


How many integers you wish to enter? 2


Successfully allocated memory for 2 integers


Enter number 0: 789
Enter number 1: 575


Displaying all numbers input:


789 575

Другой запуск:




How many integers you wish to enter? 5


Successfully allocated memory for 5 integers


Enter number 0: 789
Enter number 1: 12


Enter number 2: -6 5


Enter number 3: 285


Enter number 4: -101


Displaying all numbers input:


789 12 -65 285 -101


Анализ

Программа запраш ивает у пользователя количество целых чисел, которые он хочет ввести в систему, прежде чем резервировать память для них в строке 9. Обратите внима­ ние, как мы сохраняем резервную копию этого адреса в строке 10, которая использует­ ся впоследствии при освобождении этого блока памяти оператором d e l e t e в строке 26. Эта программа демонстрирует преимущество использования указателей и динамического распределения памяти перед статическим массивом. Когда пользователь желает хранить меньше чисел, данное приложение использует меньше памяти; когда чисел больше, он резервирует больше памяти, но никогда не растрачивает ее впустую. Благодаря динами­ ческому распределению нет никакого верхнего предела для количества хранимых чисел, если только они полностью не исчерпают системные ресурсы. Строки 13-17 содержат цикл f o r , где пользователя просят ввести числа, которые затем, в строке 16, сохраня­ ют их последовательно в памяти, используя выражение. Именно здесь отсчитываемое от нуля значение смещения (In d e x ) добавляется к указателю, заставляя вставлять введенное пользователем значение в соответствующую область памяти, не перезаписывая предыду­ щее значение. Другими словами, выражение (pNum ber + In d e x ) возвращает указатель на целое число в отсчитываемой от нуля индексной области в памяти (т.е. индекс 1 при­ надлежит второму числу), а следовательно, оператор обращения к значению * (pNumber + Index) и является тем выражением, которое оператор c i n использует для доступа к зна­ чению по отсчитываемому от нуля индексу. Цикл f o r в строках 20 и 21 подобным образом отображает эти значения, сохраненные предыдущим циклом. Создавая копию в указателе рСору и увеличивая ее содержимое в строке 21, чтобы отобразить значение, цикл f o r ис­ пользует несколько выражений инициализации.


Причина создания копии в строке 10 в том, что цикл изменяет указатель, используемый



  1. операторе инкремента (++). Исходный указатель, возвращенный оператором new, дол­ жен храниться неповрежденным для использования в операторе d e l e t e [ ] (строка 26), где должен быть использован адрес, возвращенный оператором new, а не любое произвольное значение.

182 ЗАНЯТИЕ 8. Указатели и ссылки





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   122   123   124   125   126   127   128   129   ...   437




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