Пример указателя C ++ | Указатели в C / C ++

Указатель 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 ++" окончена.

Оцените статью
nanomode.ru
Добавить комментарий