Программирование. Принципы и практика использования C++ Исправленное издание, стр. 237
2. Выведите в поток
coutint3. Освободите память, занятую массивом (используя оператор
delete[]4. Напишите функцию
print_array10(ostream& os, int* a)osa5. Разместите в свободной памяти массив, состоящий из десяти чисел типа
int6. Разместите в свободной памяти массив, состоящий из одиннадцати чисел типа
int7. Напишите функцию
print_array(ostream& os, int* a, int n)osa8. Разместите в свободной памяти массив, состоящий из двадцати чисел типа
int9. Вы не забыли удалить массивы? (Если забыли, сделайте это сейчас.)
10. Выполните задания 5, 6 и 8, используя класс
vectorprint_vector()print_array()Вторая часть задания посвящена указателям и их связи с массивами. Используйте функцию
print_array()1. Разместите в свободной памяти переменную типа
intp12. Выведите на печать значения указателя
p1int3. Разместите в свободной памяти массив, состоящий из семи чисел типа
intp24. Выведите на печать значение указателя
p25. Объявите указатель типа
int*p3p26. Присвойте указатель
p1p27. Присвойте указатель
p3p28. Выведите на печать значения указателей
p1p29. Освободите всю память, которую использовали.
10. Разместите в свободной памяти массив, состоящий из десяти чисел типа
intp111. Разместите в свободной памяти массив, состоящий из десяти чисел типа
intp212. Скопируйте значения из массива, на который ссылается указатель
p1p213. Повторите задания 10–12, используя класс
vectorКонтрольные вопросы
1. Зачем нужны структуры данных с переменным количеством элементов?
2. Назовите четыре вида памяти, используемой в обычных программах.
3. Что такое свободная память? Как еще ее называют? Какие операторы работают со свободной памятью?
4. Что такое оператор разыменования и зачем он нужен?
5. Что такое адрес? Как язык С++ манипулирует с адресами?
6. Какую информацию об объекте несет указатель, который на него ссылается? Какую полезную информацию он теряет?
7. На что может ссылаться указатель?
8. Что такое утечка памяти?
9. Что такое ресурс?
10. Как инициализировать указатель?
11. Что такое нулевой указатель? Зачем он нужен?
12. Когда нужен указатель (а не ссылка или именованный объект)?
13. Что такое деструктор? Когда он нужен?
14. Зачем нужен виртуальный деструктор?
15. Как вызываются деструкторы членов класса?
16. Что такое приведение типов? Когда оно необходимо?
17. Как получить доступ к члену класса с помощью указателя?
18. Что такое двусвязный список?
19. Что собой представляет переменная
thisТермины

Упражнения
1. Какой формат вывода значений указателя в вашей реализации языка? Подсказка: не читайте документацию.
2. Сколько байтов занимают типы
intdoubleboolsizeof3. Напишите функцию
void to_lower(char* s)sHello, World!hello, world!04. Напишите функцию
char* strdup(const char*)5. Напишите функцию
char* findx(const char* s,const char* x)xs6. В этой главе ничего не говорилось о том, что произойдет, если, используя оператор
new7. Напишите программу, считывающую символы из потока
cin!std::string