В языке C++ для создания и обработки массивов обычно используют указатели. Указатель - это переменная, содержащая адрес другой переменной или, говоря другими словами, указатель - символическое представление адреса.
В С++ указатели могут быть на любой тип данных. Значением объекта типа указатель является целое неотрицательное число, равное адресу того программного объекта (переменной, функции, массива и т.д.), на который ссылается указатель.
Если необходимо, можно описать массив указателей:
int *ip[ 10 ]; - массив указателей на целые значения из 10 элементов.Напомним, что в данном контексте символ "*" является символом унарной операции косвенной адресации. Унарная операция * рассматривает свой операнд как адрес объекта и обращается по этому адресу, чтобы извлечь его содержимое.
С указателем можно производить некоторые арифметические операции. Например, пусть sub содержит номер элемента массива, тогда до этого элемента можно "добраться" следующим образом:
mas [ sub ] или *(mas +sub)Таким образом имя массива фактически является указателем на нулевой элемент массива. Переменная sub указывает на сколько элементов необходимо сместиться. Вы можете инкрементировать и декрементировать указатель. При этом вы смещаетесь на один элемент, независимо от типа элемента.
Допустим uk - адрес нулевого элемента массива, тогда
cout<<*uk; // вывод значения 0-го элемента uk++; cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтов uk+=2 cout<<*uk; // вывод значения 3-го элемента. 19.Ссылки. Указатели и ссылки.Чтобы упростить процесс изменения параметров, С++ вводит такое понятие как ссылка. Ссылка представляет собой псевдоним (или второе имя), который ваши программы могут использовать для обращения к переменной.Ссылка C++ позволяет создать псевдоним (или второе имя) для переменных в вашей программе. Для объявления ссылки внутри программы : int & alias_name = variable; //---> Объявление ссылки
После объявления ссылки ваша программа может использовать или переменную, или ссылку:
alias_name = 1001;
variable = 1001;
Основное назначение ссылки заключается в упрощении процесса изменения параметров внутри функции.
ПРАВИЛА РАБОТЫ СО ССЫЛКАМИ
Ссылка не является переменной. Один раз присвоив значение ссылке, вы уже не можете ее изменить. Кроме того в отличие от указателей вы не можете выполнить следующие операции над ссылками:
• Вы не можете получить адрес ссылки, используя оператор адреса C++.
• Вы не можете присвоить ссылке указатель.
• Вы не можете сравнить значения ссылок, используя операторы сравнения C++.
• Вы не можете выполнить арифметические операции над ссылкой, например добавить смещение.
•Вы не можете изменить ссылку.
20. Связь указателей и массивов в языке С++. Доступ к элементам массива через указатели. Массивы указателей.
В языке C++ для создания и обработки массивов обычно используют указатели.
int *ip[ 10 ]; - массив указателей на целые значения из 10 элементов. Напомним, что в данном контексте символ "*" является символом унарной операции косвенной адресации. Унарная операция * рассматривает свой операнд как адрес объекта и обращается по этому адресу, чтобы извлечь его содержимое.
Приведем пример описания массива:
int (*a)[15];
Описан указатель на массив, содержащий 15 целых значений. Круглые скобки здесь необходимы, поскольку скобки [] имеют более высокий уровень старшинства, чем операция *.
С указателем можно производить некоторые арифметические операции. Например, пусть sub содержит номер элемента массива, тогда до этого элемента можно "добраться" следующим образом:
mas [ sub ] или *(mas +sub)Таким образом имя массива фактически является указателем на нулевой элемент массива. Переменная sub указывает на сколько элементов необходимо сместиться. Вы можете инкрементировать и декрементировать указатель. При этом вы смещаетесь на один элемент, независимо от типа элемента.
Допустим uk - адрес нулевого элемента массива, тогда
cout<<*uk; // вывод значения 0-го элемента uk++; cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтов uk+=2 cout<<*uk; // вывод значения 3-го элемента.21. Типовые алгоритмы обработки двумерных массивов данных на языке С++.
Дата: 2019-12-10, просмотров: 274.