Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Динамическая память.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
322.56 Кб
Скачать

5.Контрольні запитання

  1. Яка операція використовується для отримання адреси змінної?

  2. Що таке вказівник?

  3. Поясніть концепцію вказівників у C++. Урахуйте той факт, що об’єкти різ­них типів займають різний обсяг пам’яті.

  4. Яка операція дозволяє отримати значення, записане за адресою, що міс­титься у вказівнику?

  5. У чому відмінність між адресою, яка зберігається у вказівнику, і значенням, записаним за цією адресою?

  6. У чому різниця між операцією розіменування і операцією отримання ад­реси?

  7. У чому різниця між такими оголошеннями: const int *ptrOne й int * const ptrTwo?

  8. Поясніть сенс таких оголошень змінних:

int * pOne; int vTwo; int * pThree = &vTwo;

  1. Вказівники pt1 і pt2 мають той самий базовий тип. Що можна сказати стосовно виразу pt1 + pt2?

  2. Опишіть особливості операції віднімання для двох вказівників.

  3. Як виконуються операція віднімання числа з вказівника?

  4. Що є результатом при виконанні підсумовування вказівника і числа?

  5. Як виконуються операції ++ і --, застосовані до вказівників?

  6. Опишіть особливості вказівника на тип void.

  7. Як виконується операція індексування вказівника?

  8. Опишіть особливості вказівників, що описуються з модифікатором const.

  9. Опишіть особливості імені масиву як вказівника.

  10. Нехай у програмі оголошена змінна yourAge типу unsigned int. Як описати вказівник, який дозволить маніпулювати цією змінною?

  11. Поясніть, яка помилка може приховуватися в наведеному нижче оголо­шенні змінних:

int * int_ptr1, int_ptr2;

  1. За допомогою вказівника здійсніть присвоювання змінній yourAge зна­чення 17.

  2. Напишіть невеличку програму і опишіть у ній змінну типу int і вказівник на цей тип. Збережіть адресу цієї змінної у вказівнику. Використовуючи вказівник, здійсніть присвоювання цій змінній деякого значення.

  3. Яким буде виведення при виконанні наведеного нижче фрагменту коду?

int *p1, *p2; *pInt = 7; cout << "The value at pInt: " << pInt;

  1. Маємо таку програму:

#include <iostream> using namespace std; int main() { int pInt; *pInt = 7; cout << "The value at pInt: " << *pInt << '\n'; system("pause"); return 0; }

Чи є помилки в цій програмі? У разі позитивної від­повіді зробіть пояснення.

  1. Маємо таку програму:

#include <iostream> using namespace std; int main() { int SomeVariable = 9; cout << "SomeVariable: " << SomeVariable << '\n'; int *pVar = &SomeVariable; *pVar = 7; cout << "SomeVariable: " << *pVar << '\n'; system("pause"); return 0; }

Чи є помилки в цій програмі? У разі позитивної від­повіді зробіть пояснення.

  1. У програмі зустрілась така послідовність операторів:

double a[100]; double i; for (i = 0; i < 100; i++) a[i] = i;

Чи є помилки в наведеному вище фрагменті програмного коду? У разі позитивної від­повіді зробіть пояснення.

  1. У програмі зустрілась така послідовність операторів:

double a[100]; char i; for (i = 0; i < 100; i++) a[i] = i;

Чи є помилки в наведеному вище фрагменті програмного коду? Зро­біть пояснення.

  1. У програмі зустрілась така послідовність операторів:

double a[100], *pt = a; pt = -1.221;

Чи є помилки в наведеному вище фрагменті програмного коду? Зро­біть пояснення.

  1. У програмі зустрілась така послідовність операторів:

double a[10], *pt; for (int i = 9; i > 0; i--) *(pt + i) = i;

Чи є помилки в цьому коді? Зробіть пояснення.

  1. У програмі зустрілась така послідовність операторів:

double a[100], *pt = a; *pt = true;

Чи є помилки в наведеному вище фрагменті програмного коду? Зро­біть пояснення.

  1. У програмі зустрілась така послідовність операторів:

bool a[10], *p_a = a, b[10], *p_b = b;

Для переписування вмісту масиву a в масив b використаний такий оператор:

for (int i = 0; i < 10; i++) for (int j = i; j < i + 1; j++) *(p_b + i) = *p_a + j;

Чи є помилки в наведених вище фрагментах програмного коду? Зро­біть пояснення.

  1. Маємо ті ж визначення, що й у попередньому запитанні. Нижче наведений оператор подвійного циклу. Що можна сказати про нього?

for (int i = 0; i < 10; i++) for (int j = 0; j <= i; j++) *(p_b + i) = *(a + j);