366.00K
Category: programmingprogramming

Указатели. Лекция №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.

Самостоятельно
Какие хранятся значения в массиве ?
English     Русский Rules