11. К чему приведет неправильное задание выражения, определяющего условие выполнения цикла?

12. Может ли тело цикла отсутствовать? Если может, то приведите примеры таких циклов.

13. Чем отличается оператор while от оператора if?

14. Каков порядок действий при выполнении цикла for?

15. Как организовать арифметический цикл с помощью цикла for?

16. Запишите алгоритм, определяемый циклом for, с помощью цикла while.

17. Что такое вложенный цикл?

18. Сколько раз в общей сложности выполняется тело вложенного цикла?

19. Как и когда используются операторы break и continue?

20. Что такое рекуррентные вычисления? Когда они используются? Как их программировать?

 

Лабораторная работа № 4. Указатели

Цель работы – познакомиться с адресацией памяти, научиться правильно использовать указатели различных типов.

Постановка задачи

Набрать текст программы, найти в нем синтаксические ошибки и исправить их, в начало программы добавить вывод на экран адресов всех переменных, а в конец – значений всех переменных, проанализировать полученные результаты и объяснить, почему они именно такие.

Листинг

#include<stdio.h>

#include<conio.h>

int main(void)

{

int *a, b;

float *x, y = 3.5;

double *m, n;

a = &b;

printf(" Enter b = ");

scanf("%d", a);

x = &y;

printf(" a = %p\tb = %d\n", a, b);

getch();

b -= y;

printf(" a = %p\t*a = %d\tb = %d\n", a, *a, b);

getch();

m = a;

printf(" a = %p\tm = %p\n", a, m);

getch();

m = &n;

printf(" n = %p\tm = %p\n", &n, m);

getch();

n = 5.5;

m+=2;

printf(" n = %lf\tn = %p\tm = %p\n", n, &n, m);

getch();

*m = (float) *a - n + (int) *x;

printf(" m = %p\t*m = %lf\n", m, *m);

getch();

m -= 2;

printf(" n = %lf n = %p m = %p *(m+2) = %lf\n", n, &n, m, *(m+2));

getch();

return 0;

}

Контрольные вопросы

1. Что такое указатель?

2. Какой объем памяти занимает указатель?

3. Что является значением переменной-указателя?

4. Как проинициализировать указатель?

5. Что такое NULL?

6. Что такое указатель на void? Зачем нужны такие указатели?

7. Какие операции допустимы при работе с указателями?

8. Чем отличается унарная операция "&" от унарной "*" ?

9. Совместимость типов указателей.

10. Можно ли получить адрес указателя?

11. Можно ли указателю присвоить его же адрес?

12. Почему к указателю на void нельзя применить операцию разыменования?

13. Как работают операции инкремента и декремента, примененные к указателям?

14. Каков результат операции вычитания, примененной к указателям одного типа?

15. Какой спецификатор типа используется при выводе адреса на экран с помощью функции printf()?