понедельник, 13 июня 2011 г.

C++. Урок 12. Работа с указателями. Динамическое выделение памяти

Кроме переменных в с++ существуют указатели, которые вместо того, чтобы "хранить" их, содержат адрес этих данных в памяти. То есть, например, у нас есть куча шариков. Где-то есть шарик с номером 5. Ну так вот, указатель - это такая переменная, которая указывает на "позицию" этого шарика, на его местоположения.
Создание указателя:
тип *имя;
Пример:
int *p;  // указатель на переменную типа int или первый элемент массива типа int
char *pc; // указатель на переменную или массив типа char
Теперь надо заставить указатель на что-то указывать. Для этого мы можем использовать оператор & - функция взятия адреса переменной
int *p;
int a=10;
p=&a;
//теперь p указывает на переменную a.
Для записи чего-либо в память, на которую указывает указатель надо использовать оператор *, который обозначает, что мы работаем с данными, находящимися по такому-то адресу
*p=20; //теперь a==20
Также мы можем динамически выделять память под данные во время работы программы. а не во время ее разработки. Например, нам вводят число символов в строке и затем строку. С помощью указателей и выделения памяти мы можем создать массив необходимого размера во время работы программы.
Для выделения памяти служит функция new:
char *c=new char(количество символов);
Вот мы создали массив типа char.Работа с ним ничем не отличается от работы с обычным массивом.
Внимание, после того, как вы поработали с массивом и вам он больше не нужно, необходимо отчистить память:
delete [] имя указателя на память, которую нужно отчистить.

Комментариев нет:

Отправить комментарий