Указатели. Лекция №7
1.
Лекция № 7Указатели
2.
Объявляем переменнуюПамять – последовательность ячеек,
каждая ячейка имеет свой адрес,
адрес – целое число.
127813 или
адрес,
1F345
создаёт компилятор
123
year
int
имя,
задаём в программе
year = 123; // переменная
3.
УказательУказатель это переменная, которая
содержит адрес другой переменной.
Указатель – просто целое число.
123
year
p
int year = 123; // переменная
int *p; // указатель
4.
Вычисление адресаОперация &
123
year
p
int year = 123; // переменная
int *p; // указатель
p = &year; // указателю присвоили
// адрес переменной year
5.
Взять значение по адресу(разыменование указателя)
Операция
123
year
500
*
p
int year = 123; // переменная
int *p; // указатель
p = &year; // указателю присвоили
// адрес переменной year
*p = 500; // изменили
// переменную year
6.
Изменение значение переменной123
year
year = 123;
p = &year;
*p = 500;
500
year
Указатель – «наводчик» на переменную
7.
Примеры объявления указателейint *p;
char *st;
void *pic; // указатель на void
double *sp;
int **ap;
// указатель на указатель
char ***sw;
// ук. на ук. на ук.
student *pk; // указатель на
// структуру
8.
Зачем нам указатели ?1. Создание динамических структур данных:
очереди, стеки, деревья…
2. Работа с динамической памятью, строками,
массивами.
3. Работа с функциями. Пример scanf("%d",&a)
9.
Пример.10.
Арифметика с указателями.int *p;
double *sp;
...
p++;
// изменили адрес на 4 байта
sp--; // изменили адрес на 8 байт
В операциях ++, -указатель меняется на длину типа.
++, -- позволяют перемещать указатель по памяти.
11.
Указатель на структуруstruct student
{
char fio[100];
int
year;
};
struct student *p,
st={"Petrov A.C.",1990};
p=&st;
p->year = 1991; // обратились к полю
(*p).year = 1991; // громоздко
12.
Массивы и указателиПри определении массива автоматически
определяется указатель на нулевой элемент.
int a[100]; // массив
// и как бонус указатель a
// на нулевой элемент
int *p;
p=a;
// ----- одинаково
p=&a[0]; // --------------a[10]=34;
// ----- два способа
*(a+10)=34;
13.
Пример14.
СамостоятельноКакие хранятся значения в массиве ?
15.
СамостоятельноКакие хранятся значения в массиве ?