799.58K
Категория: ПрограммированиеПрограммирование

Указатели. Статическая память. Динамическая память. Лекция 18

1.

Указатели
Статическая память
Динамическая память

2.

Куча — это хранилище памяти,
расположенное в ОЗУ, которое допускает
динамическое выделение памяти (это просто
склад для ваших переменных)

3.

2

4.

Унарные и бинарные
операции какие примеры
вы знаете?

5.

2
Адрес дома: 00EFF7AC

6.

Унарная операция & - адрес
00EFF7AC

7.

Указатель — это переменная,
содержащая адрес другой
переменной.
2

8.

pdom
&dom
00EFF7AC
dom
2

9.

pdom
&dom
00EFF7AC
dom
2

10.

Так как указатель содержит адрес объекта, это дает
возможность «косвенного» доступа к этому объекту через
указатель.
pdom
&dom
00EFF7AC
2

11.

pdom
&dom
00EFF7AC
2

12.

Вариант 1
&dom
2
Вариант 2

13.

содержимое
Адрес

14.

dom
2
МУСОР
00EFF7AC
00EFF7AC+1
мусор
МУСОР
МУСОР
1) Это важно запомнить

15.

dom
2
00EFF7AC
МУСОР
-1
00EFF7AC+50
мусор
МУСОР
МУСОР

16.

Присвоим y содержимое того, на что
указывает px.
5
int x=5, y=0;
int *px;
px = &x;
y = *px;
Y
*px

17.

int z=100;
int *pz;
pz=&z;

18.

int x=5,y=0;
int *px=&x;
y = *px + 1;
y=5+1;
y = px + 1;

19.

int x=5;
int *px=&x;
*px=0; // Что будет с х???
int x=5;
int *px=&x;
*px+=1; //что будет с х? аналог (*px) + 1;

20.

int x;
int *px;
int *py;
px=&x;
py = px;
Копировать адрес
5
*px
*py

21.

22.

1) Создать пять переменных A,B,C,D,E
2) Создать указатели на переменные pA pB pC pD pE
3) Изменить содержимое A и B через указатели pA pB
4) Вывести на экран адрес указателя pС и адрес С
5) Вывести на экран содержимое указателя pD
6) Указателю pE присвоить адрес указателя pA. Изменить
содержимое указателя pE и вывести на экран pE, pA, A

23.

1) Создать указатель на number=5.65;
2) Поменять содержимое number через указатель
3) Копировать содержимое number через указатель в
переменную X;

24.

Указатели и массивы
int a[10];
int *pa;
pa = &a[0]; // pa указывает на нулевой элемент массива a.
x = *pa; // будет копировать содержимое a[0] в x.
x= *(pa+1); // x=a[1];
x=*(pa+5); //x=a[5];

25.

26.

27.

Задача: Создать массив
Array[100]. Сделать
указатель на этот массив
*pArray;
И через указатель записать в
массив rand()%5+1;

28.

Когда имя массива передается функции, то на самом деле ей передается
местоположение начала этого массива. Внутри вызванной функции такой
аргумент является точно такой же переменной, как и любая другая, так что имя
массива в качестве аргумента действительно является указателем, т.е.
переменной, содержащей адрес.
void ShowElements(int *m, int size)
{
for (int n = 0; n < size; m++,n++)
cout<<*m<<"\t";
}

29.

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

30.

swap()
которая меняет x и y местами через указатели px и py
Написать функцию

31.

32.

1 вариант
2 вариант

33.

ДЗ решить вторым вариантом
English     Русский Правила