Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Указатели. Инициализация. Арифметические операции.

Объявление и инициализация одномерного и двумерного массивов. Работа с элементами массива через указатель. | Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. | Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). | Константные методы, их аргументы и константные объекты. | Строки на основе массива типа char и класса string | Перегрузка бинарных операций | Преобразование типов от основного к пользовательскому. | Предотвращение преобразования типов от основного к пользовательскому с помощью конструктора |


Читайте также:
  1. Алгебра логики. Элементарные логические операции. Таблицы истинности.
  2. Арифметические основы компьютера
  3. Банковская система. Банки и их операции.
  4. Боль все-таки была, особенно, в самом начале операции. Но я смотрел
  5. Начало поисковой операции. Общая хронология розысков. Обнаружение первых тел погибших туристов
  6. Подготовка операции. Вермахт.
  7. Подготовка операции. Красная армия

Каждый байт памяти компьютера имеет адрес. Загружаясь в память, наша программа занимает некоторое количество этих адресов. Адрес переменной можно получить используя операцию получения адреса &:

int main ()

{

int var1 = 11; // определим переменную

cout << &var1 << endl; // напечатаем её адрес

return 0;

}

Переменная, содержащая в себе значение адреса, называется указателем. Указатели определяются с использованием звездочки, которая означает указатель на. В определение указателя всегда включают тип данных, на который он указывает:

int* ptr;

Переменная ptr может содержать в себе адрес переменной типа int.

Если мы определяем в одной строке более чем один указатель одного и того же типа, то звездочку необходимо ставить перед именем каждой переменной:

char* ptr1, * ptr2, * ptr3; // три переменных указателя

Доступ к тому, на что указывает указатель, мы получаем, применяя звездочку, которая в этом случае является операцией разыменования, то есть получения значения переменной, на которую указывает указатель:

int var1 = 11;

int* ptr; // ptr - указатель на целое

ptr = &var1; // помещаем в ptr адрес переменной var1

cout << *ptr << endl; // показываем содержимое переменной через указатель

Адрес, который помещается в указатель, должен быть одного с ним типа. Однако существует тип указателя, который может указывать на любой тип данных. Он называется указателем на void и определяется следующим образом:

void* ptr; // указатель, который может указывать на любой тип данных

указатель на любой тип данных используется в ситуациях, когда один и тот же указатель должен хранить адреса переменных разных типов.

Доступ к элементам массива можно получить как используя операции [ ], так и используя указатели. Например, результат действия выражения *(intarray+3) — тот же, что и выражения intarray[3].

Мы хотим получить четвертый элемент массива, а не его четвертый байт. Именно для того, чтобы осуществлять правильный доступ к элементам массива, компилятору необходимо знать, на переменные какого типа указывает указатель. Он умножает значение индекса на размер элемента.

Использование модификатора const при объявлении указателя может означать один из двух вариантов в зависимости от его расположения:

const int* cptrInt; // указатель на константу

int* const ptrcInt; // константный указатель

Используя первый вариант объявления указателя, вы не можете изменять значение переменной, на которую указывает указатель cptrInt, но можете изменять значение самого указателя cptrInt. Если вы воспользуетесь вторым вариантом, то все будет наоборот. Вы не сможете изменять значение самого указателя cptrInt, но сможете изменять значение того, на что cptrint указывает. Можно использовать const в обеих позициях и сделать константами как сам указатель, так и то, на что он указывает.

Могут существовать указатели на указатели. Такие переменные определяются с использованием двойной звездочки, например int** pptr.


Дата добавления: 2015-08-17; просмотров: 60 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Базовый и производный классы. Конструкторы производного класса. Перегрузка методов при наследовании. Алгоритм выбора перегруженного метода.| Управление памятью. Операции new и delete. Указатель this.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)