Указатели и массивы Указатели



бет8/12
Дата06.01.2022
өлшемі1,96 Mb.
#15493
түріУказатель
1   ...   4   5   6   7   8   9   10   11   12
тип & имя;
где тип — это тип величины, на которую указывает ссылка, & — оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа, например:
1nt ко!:
1nt& pal = kol; // ссылка pal - альтернативное имя для ко!
const char& CR = ' \ n ' : // ссылка на константу
Запомните следующие правила.


  • Переменная-ссылка должна явно инициализироваться при ее описании, кро­ ме случаев, когда она является параметром функции (см. с. 77), описана как extern или ссылается на поле данных класса (см. с. 178).




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




  • Тип ссылки должен совпадать с типом величины, на которую она ссылается.




  • Не разрешается определять указатели на ссылки, создавать массивы ссылок и ссылки на ссылки.

Ссылки применяются чаще всего в качестве параметров функций и типов воз­ вращаемых функциями значений. Ссылки позволяют использовать в функциях переменные, передаваемые по адресу, без операции разадресации, что улучшает читаемость программы (подробнее об этом рассказывается в разделе «Параметры функции», с. 77).


Ссылка, в отличие от указателя, не занимает дополнительного пространства в па­ мяти и является просто другим именем величины. Операция над ссылкой приво­ дит к изменению величины, на которую она ссылается.
Массивы
При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя. Если с группой величин одинакового типа требу­ ется выполнять однообразные действия, им дают одно имя, а различают по по­ рядковому номеру. Это позволяет компактно записывать множество операций с помощью циклов. Конечная именованная последовательность однотипных вели­ чин называется массивом. Описание массива в программе отличается от описа­ ния простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):
f!oat а [10]; // описание массива из 10 вещественных чисел
При описании массивов квадратные скобки являются элементом синтаксиса, а не указанием на необязательность конструкции.
Элементы массива нумеруются с нуля. При описании массива используются те же модификаторы (класс памяти, const и инициализатор), что и для простых пе­ ременных. Инициализирующие значения для массивов записываются в фигур­ ных скобках. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не ука­ заны, обнуляются:
int b[5] = {3. 2. 1}; / / b[0]=3. b[l]=2. b[2]=l. b[3]=0. b[4]=0
Размерность массива вместе с типом его элементов определяет объем памяти, не­ обходимый для размещения массива, которое выполняется на этапе компиляции, поэтому размерность может быть задана только целой положительной констан­ той или константным выражением. Если при описании массива не указана размерность, должен присутствовать инициализатор, в этом случае компилятор вы­ делит память по количеству инициализирующих значений. В дальнейшем мы увидим, что размерность может быть опущена также в списке формальных пара­ метров (см. раздел «Параметры функции», с. 77).
Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках. В следующем примере подсчитывается сумма элементов массива.
#include <1estream.h>
int ma1n(){
const int n = 10;
int i . sum;
int marksCn] = {3. 4. 5. 4. 4};

for (1 = 0. sum = 0; 1

}
Размерность массивов предпочтительнее задавать с помощью именованных констант, как это сделано в примере, поскольку при таком подходе для ее измене­ ния достаточно скорректировать значение константы всего лишь в одном месте программы. Обратите внимание, что последний элемент массива имеет номер, на единицу меньший заданной при его описании размерности.
ВНИМАНИЕ
При обращении к элементам массива автоматический контроль выхода индекса за грани­ цу массива не производится, что может привести к ошибкам.
Пример. Сортировка целочисленного массива методом выбора. Алгоритм состо­ ит в том, что выбирается наименьший элемент массива и меняется местами с первым элементом, затем рассматриваются элементы, начиная со второго, и наи­ меньший из них меняется местами со вторым элементом, и так далее п-1 раз (при последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива).




Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   12




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет