Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

C++ указатели. Константный указатель

Декабрь 20, 2014

Untitled-2На этом уроке мы рассмотрим c++ указатели. Рассмотрим базовую теорию указателей и адресной арифметики.

Указатели обеспечивают высокую скорость и гибкость программы. Например, массивы всегда передаются в функцию с помощью указателя. Таким образом мы передаем через стек программы всего 4 байта, экономя ресурсы. Указатели часто используются для работы с динамической памятью. Мы динамически выделяем память и записываем в указатель адрес созданного массива.

Динамические массивы мы рассмотрим позже. C++ указатели — мощный и в тоже время сложный инструмент, который часто вызывает у новичков вопросы. Также надо четко понимать отличие указателей от ссылок. Поэтому первый и второй урок посвящен рассмотрению c++ указателей и ссылок.

В чем их отличие и какие операции можно с ними проводить. На третьем уроке рассматривается передача в функцию по значению, ссылке и с помощью указателей. Указатель — это тоже переменная, которая также имеет адрес. Мы можем создать указатель на указатель и присвоить ему адрес указателя.

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

Каждый элемент двухсвязного списка хранит адрес предыдущего и последующего элемента. Удаляя элемент, мы просто меняем значения указателей. Еще один пример использования c++ указателей — бинарное дерево. В этом случае узел дерева имеет одного родителя и двух потомков.

Тем самым обеспечивается очень высокая скорость поиска. Также можно создать указатель на константу, константный указатель и константный указатель на константу. К примеру у нас есть указатель на строковый литерал: char *str = «some text».

Если мы изменим один из символов массива, например str[2] = ‘z’, мы получим ошибку на этапе выполнения программы. Поэтому, чтобы избежать ошибки, можно создать указатель на константу: const char *str = «some text». Но указатель str может изменяться, например, можем присвоить новую строку: str = «hello». Но, если нам надо обеспечить неизменность строки, то нужно сделать константным и сам указатель: const char *const str = «some text». Это так называемый константный указатель на константу.

С уважением, Александр Солдаткин.



Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.