Указатель C ++ — это переменная, значение которой является адресом другой переменной. Указатели — это символическое представление адресов. Они позволяют программам моделировать вызов по ссылке, а также создавать динамические структуры данных и управлять ими. Вы должны объявить указатель, прежде чем сможете с ним работать.
Пример указателя C ++
Если мы хотим понять указатель, давайте сначала рассмотрим переменные « обычные ». Если вы знакомы с языком программирования без указателей, таких как JavaScript, вы подумаете об этом, когда услышите слово «переменная».
При объявлении переменной по идентификатору (или имени) переменная будет синоним его значения.
int number = 3; std :: cout
Значение переменной может быть изменено напрямую.
number ++; number = number * 2; std :: cout
Каждое значение живет по адресам памяти. Доступ к адресу памяти переменной можно получить с помощью оператора & .
std :: cout
Оператор адресации (&)
Адрес переменной можно получить, поставив перед именем переменной знак амперсанда ( & ), известный как оператор адресации. См. Следующий код.
app = & var;
Это назначит адрес переменной var в приложение ; предшествуя имени переменной var с помощью оператора адреса (&) , мы больше не назначаем содержимое самой переменной в приложение, но ее адрес.
Фактический адрес переменной в памяти не может быть известен до времени выполнения, но давайте предположим, чтобы помочь прояснить некоторые концепции, что var помещается во время выполнения по адресу 1921 памяти.
Что такое указатель?
Как Название предполагает, что указатели представляют собой объекты другого типа по сравнению со стандартными переменными, поскольку они хранят адрес какой-либо другой переменной или путевую точку к переменной.
Пример. int a; //‘a’ — это переменная, которая будет содержать некоторое целочисленное значение.
int * a; //’a’ — указатель на целочисленную переменную.
Общая декларация
* pointerName; может быть int, float, char и т. д..
Зачем использовать указатели C ++?
Как упоминалось ранее, указатели содержат адрес, поэтому мы можем использовать его для уменьшения сложности при отправке параметры в функции.
Предположим, существует массив огромного размера, и мы должны отправить массив в качестве параметра функции, поэтому вместо передачи массива мы можем передать адрес первой переменной.
Кроме того, вычислительные операции с использованием указателей на уровне адреса менее сложны, чем без него.
Пример примера:
Чтобы узнать адрес переменной мы используем оператор ссылки ‘&’, а чтобы увидеть значение, хранящееся по адресу, указанному указателем, мы используем оператор разыменования ‘*’.
int a = 10; //целочисленная переменная aint * p = & a; //ссылка на оператор ‘&’ с префиксом целочисленной переменной a. p теперь будет хранить адрес a.int b = * p; //разыменование указателя p с помощью символа «*» с префиксом p. b сохранит значение a, равное 10.
См. следующую программу-указатель на C ++.
#include using namespace std; int main () {//Пример программы для демонстрации концепций указателей. int a = 20; //целочисленная переменная a int * p; //указатель на целое число p = & a; //p теперь содержит адрес a. coutСм. результат.
![]()
Приложения:
Используется при вызове по ссылке с использованием указателей.
При вызове по ссылке, когда переменная передается как ссылка, а затем изменения, внесенные в нее внутри тела функции, также отражаются в основной функции. Рассмотрим приведенную ниже программу замены двух чисел с помощью указателей.
#include using namespace std; void swap_ (int * x, int * y) {int temp = * x; //сохраняем значение, хранящееся по адресу, указанному x. * х = * у; //изменить значение по адресу, указанному x, на значение по адресу y * y = temp; //изменить значение по адресу, указанному y, на значение, которое присутствовало по адресу x в начале. } int main () {//Пример программы для отображения вызова по ссылке по указателям int a = 20; //целочисленная переменная a int b = 30; //целочисленная переменная b coutПосле вызова функции обмена значения меняются местами между a & b, то есть a = 30 и b = 20. См. Результат.
![]()
Массив C ++ указателей
Массив указателей означает, что существует массив, в котором хранятся адреса другой переменной.
int * a [10]; //массив целочисленных указателейСм. следующий пример кода.
#include using namespace std; int main () {//Пример программы для отображения вызова по ссылке по указателям int a [10]; int i, j; для (я = 0; яСм. результат.
![]()
Указатели и массив
Имя массива - это начальный адрес массива. Итак, рассмотрим int a [10]; a, & a, & a [0] означают то же самое.
Чтобы получить доступ к i-му индексу в массиве, это можно сделать, используя * (a + i), * (i + a), a [i] или i [a]. Все одинаковы.
См. Следующий пример кода.
#include using namespace std; int main () {//Пример программы для отображения вызова от ссылка по указателям int a [10]; int i, j; для (я = 0; яСм. следующий результат.
![]()
Арифметика указателей
Арифметические операции, такие как ++, -, +, -, могут выполняться с переменными-указателями.
Рассмотрим, int a [3] = {1,2,3};
ptr = & a [0]; ptr = ptr + 1; //Это будет указывать на следующую переменную в массиве. ptr ++ сделает то же самое. ptr = ptr-1; //Снова указатель укажет на 0-й индекс. ptr - сделает то же самое.См. следующий код.
#include using namespace std; int main () {//Пример программы для отображения вызова по ссылке по указателям int a [3] = {1,2,3}; int * p = & a [0]; р = р + 1; //указывает на следующее целое число coutСм. результат.
![]()
Ниже перечислены некоторые важные типы указателей.
Нулевой указатель
Указатель ни на что не указывает и был инициализирован в NULL. ПУСТОЙ указатель - это значение.
Значение равно 0.
![]()
См. следующий код.
#include using namespace std; int main () {//Пример программы для отображения нулевого указателя int * p = NULL; //инициализируется значением NULL coutСм. результат.
![]()
Указатель на пустоту в C ++
В отличие от нулевого указателя, это не значение, а тип указателя. При работе с указателями void необходимо использовать приведение типов. Значит, используя этот указатель, вы можете эффективно работать с любым типом данных. Вам необходимо указать этот тип данных.
См. следующую программу.
#include using namespace std; int main () {//Пример программы для отображения указателя Void int a = 10; void * p; //инициализируется значением NULL p = & a; //адрес coutСм. результат.
![]()
Висячий указатель
Указатель, указывающий на место в памяти, которое больше не существует, то есть на место в памяти было удалено. См. Следующую программу.
#include using namespace std; int main () {//Пример программы для отображения висячего указателя int * a = new int [2]; а [0] = 10; а [1] = 20; int * p = & a [0]; удалить; //прокомментируем эту строку, чтобы избежать зависания указателя coutСм. Следующий вывод.
![]()
Указатель C ++ на указатель
Указатель, в котором хранится адрес другого указателя, называется указателем на указатель. В данном случае происходит следующее: указатель сохраняет адрес другого указателя, а затем этот второй указатель сохраняет адрес одной переменной.
![]()
Следующая программа рассказывает, как с этим бороться.
#include using namespace std; int main () {//Пример программы для отображения указателя на указатель int a = 10; int * p = & a; //сохраняет адрес целого числа a int ** q = & p; //хранит адрес указателя p coutСм. результат.
![]()
Наконец, статья "Пример указателя C ++" окончена.