Программирование >>  Элементы языков с и с++ 

1 ... 55 56 57 [ 58 ] 59 60 61 ... 200


Массивы

в языке С++ наряду с обычным объявлением массива в виде тип Имя[раз-мерность] (native-массивы) можно объявить массив, пользуясь ключевым словом array (managed-массивы). Этот массив будет располагаться в выделенной средой CLR памяти.

Синтаксис объявления такого массива следующий:

[qualifiers] [cli::] array< [qualifiers] typel [, dimension] var =

gcnew [cli:: ]array<type2[, dimension]>(val[,val-])

Здесь:

D dimension- размерность массива. По умолчанию размерность массива равна 1 (одномерный массив). Максимальная размерность равна 32 (32-мерный массив);

П val - количество элементов массива;

n qualifiers - спецификатор класса памяти. Значениями этого параметра могут быть: mutable, volatile, const, extern и static.

}(fiaccbi в С++ 775

public ref struct R managed-тип 1

функция, у которой параметр nn имеет native-тип N int f(N nn) (

nn.i++; return(nn.i);

int main 0 Головная функция 1

R г = gcnew R; N n;

n.i=333;

int ni=r->f (n) ;

Console: :WriteLine ( ni= + ni) ;



Квалификатор mutable, например, означает, что если массив имеет такой квалификатор и является членом класса, то ему может присваивать значение функция (тоже член класса), у которой есть квалификатор const (см. пример этой функции в листинге 8.5). В объявлении массива этого типа присутств)ет утилита gcnew, которая сразу же в объявлении выделяет под экземпляр массива CLR-память.

Пример работы с рассмотренным массивом приведен в листинге 8.6, а ре-1 зультат - на рис. 8.5. Пояснения к тексту программы даны в самом тексте.

I Листинг 8.6

3 Array-массивы.срр : main project file. #include stdafx.h compile with: /clr

using namespace System; этот оператор подключается в заготовку

автоматически, когда вы задаете CLR-шаблон консольного приложения

ttdefine ARRAYSIZE 2

value struct MyStruct managed-value-структура 1

int m i;

ref class MyClass managed-ref-класс (

public:

int m i;

struct MyNativeClass native-структура (

int m i;



Функция возвращает массив целых чисел типа Int32.

array<Int32> TestlO <Int32> - тип массива

int i;

.♦объявление массива с именем local[] (это массив ссылок на числа типа Int32):*/

array< Int32 local = gcnew array< Int32 >{ARRAY SIZE);

for (i = 0 ; i < ARRAY SIZE ; i++)

local [i] = i + 10; return local;

/♦Функция модифицирует массив, т.к. через

указатели это можно делать с внешними переменными:*/

void Test2 (аггау< MyNativeClass * local)

Эта функция возвращает массив ссылочного типа (массив ссылок): array<MyClass> TestO() <MyClass> - тип массива: ссылки на класс 1

int 1;

/♦объявление массива с именем local[] (это массив ссылок на класс):*/ аггау< MyClass local = gcnew array< MyClass > (ARRAY SIZE) ; for (1=0; i < ARRAY SIZE ; i++) 1

/*Дпя к£1ждого элемента массива надо создать экземпляр класса HyClass,

чтобы получить доступ к члену этого класса:*/ local[1] = gcnew MyClass; возвращает ссылку на вьщеленную

память

local[i] -> m i = i; члену экземпляра класса MyClass m i присваивается значение 1

return local; возвращается массив ссылок на созданные объекты класса



1 ... 55 56 57 [ 58 ] 59 60 61 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика