Главная страница

отчет по практике. Колледж инновационных технологий КарТУ


Скачать 74.63 Kb.
НазваниеКолледж инновационных технологий КарТУ
Анкоротчет по практике
Дата25.02.2021
Размер74.63 Kb.
Формат файлаdocx
Имя файлаOtchyot.docx
ТипРеферат
#179455
страница5 из 7
1   2   3   4   5   6   7

2 Массив. Объявление Инициализация массивов Массивы как параметры.


В C++ возможно лишь поэлементное копирование массивов. Этим объясняется то обстоятельство, что в списке объявлений параметров не объявляются параметры-массивы. В Borland С++ 4.5 транслятор спокойно реагирует на объявление одномерного массива в заголовке функции, проверяет корректность его объявления (размеры массива должны быть представлены константными выражениями), однако сразу же игнорирует эту информацию. Объявление одномерного массива-параметра преобразуется к объявлению указателя. Подтверждением этому служит тот факт, что "массив"-параметр невозможно проинициализировать списком значений, что совершенно нормально для обычных массивов:

void ff(int keyArr[ ] = {0,1,2,3,4,5,6,7,8,9});// Ошибка объявления.

void ff(int keyArr[10] = {0,1,2,3,4,5,6,7,8,9});// Ошибка объявления.

Оба варианта прототипа функции будут отвергнуты. При этом транслятор утверждает, что указателю (и это несмотря на явное указание размеров массива!) можно присваивать значение адреса, либо NULL.

int keyArr[100]; // Глобальный массив.

int xArr[5]; // Ещё один глобальный массив.

int XXX; // Простая переменная.

void ff(int keyArr[ 1] = keyArr, //Объявление одноименного параметра.

int pArr1 [10] = xArr,

int pArr2 [ ] = &XXX, // Адрес глобальной переменной.

int pArr3 [ ] = &xArr[10], //Адрес несуществующего элемента.

int pArr4 [50] = NULL);

Инициализация массива

спецификатор типа имя_массива [размерN] ... [размер1] = {список значений};

Список значений - это разделенный запятыми список констант, совместимых по типу со спецификатором типа. Первая константа помещается в первый элемент массива, вторая - во второй и так далее. За последней константой списка нет запятой. Обратим внимание, что точка с запятой следует за}.

2.1 ValueType и ReferenceType. Встроенный сервис по обслуживанию простых массивов. Спецификатор params.


Value Type и Reference Type. Два типа массивов

Рассмотрим следующее объявление:

MyType[] myArray = new MyType[10];

Результат выполнения этого оператора зависит от того, что собой представляет тип MyType.

Возможны всего два варианта: MyType может быть типом-значением или типом-ссылкой.

Если это тип-значение, результатом выполнения оператора будет массив, содержащий 10 объектов MyType с предопределенными значениями.

Если MyType является ссылочным типом, то в результате выполнения данного оператора будет создан массив из 10 элементов типа "ссылка", каждый из которых будет проинициализирован пустой ссылкой – значением null.

Доступ к элементам массива реализуется в соответствии с правилом индексации – по каждому измерению индексация осуществляется с НУЛЯ до n–1, где n – количество элементов размерности.

Встроенный сервис по обслуживанию простых массивов

При работе с массивами следует иметь в виду одно важное обстоятельство.

В .NET ВСЕ массивы происходят от ОДНОГО общего (базового) класса Array. Это означает, что ВСЕ созданные в программе массивы обеспечиваются специальным набором методов для создания, управления, поиска и сортировки элементов массива. К числу таких методов и свойств, в частности, относятся следующие свойства:

public int Length {get;}

Возвращает целое число, представляющее общее количество элементов во всех измерениях массива.

public int Rank {get;}

Возвращает целое число, представляющее количество измерений массива.

2.2 Перегрузка операций. Операторная функция. Унарные операторные функции и Бинарные операции.


Бинарную операцию можно определить как функцию-член с одним параметром, или как глобальную функцию с двумя параметрами. Значит, для любой бинарной операции @ выражение aa @ bb интерпретируется либо как aa.operator(bb), либо как operator@(aa,bb). Если определены обе функции, то выбор интерпретации происходит по правилам сопоставления параметров. Префиксная или постфиксная унарная операция может определяться как функция-член без параметров, или как глобальная функция с одними параметром. Для любой префиксной унарной операции @ выражение @aa интерпретируется либо как aa.operator@(), либо как operator@(aa). Если определены обе функции, то выбор интерпретации происходит по правилам сопоставления параметров. Для любой постфиксной унарной операции @ выражение @aa интерпретируется либо как aa.operator@(int), либо как operator@(aa,int). Если определены обе функции, то выбор интерпретации происходит по правилам сопоставления параметров.

После того как объявлены операторы true и false, могут быть объявлены операторные функции — конъюнкция и дизъюнкция. Эти функции работают по следующему принципу:

после оценки истинности (критерий оценки задается при объявлении операций true и false ) операндов конъюнкции или дизъюнкции функция возвращает ссылку на один из операндов либо на вновь создаваемый в функции объект;

в соответствии с ранее объявленными операциями true и false, операторные конъюнкция и дизъюнкция возвращают логическое значение, соответствующее отобранному или вновь созданному объекту:

public static Point2D operator | (Point2D par1, Point2D par2)

{

if (par1) return par1; // Определить "правильность" объекта par1 можем!

if (par2) return par2; // Определить "правильность" объекта par2 можем!

return new Point2D(10.0F, 10.0F); // Вернули ссылку на

// новый "неправильный" объект.

}
1   2   3   4   5   6   7


написать администратору сайта