Понедельник, Июль 5th, 2010

Шпоры по С++

Обращение к элементу массива относят к постфиксному выражению вида PE[IE]. PE — указатель на нужный тип , IE — целочисленный тип, PE[IE] — индексированный элемент этого массива. Аналогично *(PE+IE). Поскольку сложение коммутативно, то запись *(IE+PE) эквивалентна *(PE_IE), следовательно, IE[PE] именует тот же элемент массива, что и PE[IE].
Так как имя массива есть не просто указатель, а указатель константа, то значение имени невозможно изменить. Получить доступ ко второму элементу массива int z[4] с помощью выражения *(++z) будет ошибкой, а выражение *(z+1) допустимо.
Конструкция type *имя; описывает указатель. Его можно связать с массивом элементов типа type несколькими способами.
В определениях существуют следующие возможности:
type *имя = имя_уже_определеного_массива_типа_type ;
type *имя = new type[ размер_массива ] ;
type *имя = (type*) malloc ( размер sizeof(type) ) ;
Например:
long arlong [ ] = {100, 200, 300, 400} ; //массив
long *arlo = arlong ; //указатель связи с массивом
int *arint = new int [4] ; //указателю выделили участок памяти
double *ardouble = (double*)malloc(4*sizeof(double) ); //определили //указатель и выделили участок памяти

6 Многомерные массивы
Многомерные массив – это массив элементы кот. яв-ся другие массивы. type имя_массива [k1][k2]…[kn];
int ARRAY [4][3][6];
ARRAY [ 3 ] ARRAY [ 2 ] ARRAY [ 1 ] ARRAY [ 0 ]
Массив 3 на 6
Массив 3 на 6
Массив 3 на 6
Массив 3 на 6
возрастание адреса
ARRAY [ i ][ 2 ] ARRAY [ i ][ 1 ] ARRAY [ i ][ 0 ]
Массив из 6 эл-в
Массив из 6 эл-в
Массив из 6 эл-в
возрастание адреса
ARRAY [i][j][5] ARRAY [i][j][4] . . . ARRAY [i][j][0]
Скалярный эл-нт
Скалярный эл-нт
. . .
Скалярный эл-нт
возрастание адреса
Доступ к элементам многомерных массивов возможен двумя способами: 1) с помощью индексированных переменных 2) с помощью указателей. Возможно объединение обоих способов в одном выражении.
Выражение int *array[6]; вводит массив указателей на объекты типа int . Имя массива array, оно состоит из шести элементов типа int*.
Определение int (*ptr) [6] вводит указатель на массив из шести элементов типа int.
Операция new тип_массива выделяет в динамической памяти участок для размещения массива соответствующего типа, но не позволяет его инициализировать. В результате выполнения операция new возвратит указатель, значением которого служит адрес первого элемента, размер массива должен быть полностью определен.
long ( *lp ) [2][4] ;
lp = new long [3][2][4];

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры