Программирование >>  Инициализация объектов класса, структура 

1 ... 34 35 36 [ 37 ] 38 39 40 ... 395


void mumble () {

Points pt3d = point3d; правильно: pt2d == 3

ошибка: pt3w инициализируется типом int Points pt3w = 3;

/ ошибка: polygon :)t3w = polygon;

pt3w =

правильно: оба объекта типа Points

pt3w = pt3d;

Однако в арифметических выражениях перечисление может быть автоматически

const int array size = 1024; правильно: pt2w преобразуется int

преобразовано в тип int. Например:

int chunk size = array size * pt2w;

3.9. Тип массив

Мы уже касались массивов в разделе 2.1. Массив - это набор элементов одного типа, доступ к которым производится по индексу - порядковому номеру элемента в массиве. Например:

int ival;

определяет ival как переменную типа int, а инструкция

int ia[ 10 ];

задает массив из десяти объектов типа int. К каждому из этих объектов, или элементов массива, можно обратиться с помощью операции взятия индекса:

ival = ia[ 2 ];

присваивает переменной ival значение элемента массива ia с индексом 2. Аналогично

ia[ 7 ] = ival; присваивает элементу с индексом 7 значение ival.

Определение массива состоит из спецификатора типа, имени массива и размера. Размер задает количество элементов массива (не менее 1) и заключается в квадратные скобки. Размер массива нужно знать уже на этапе компиляции, а следовательно, он должен быть константным выражением, хотя не обязательно задается литералом. Вот примеры правильных и неправильных определений массивов:



int main() {

= 10;

const int array size = int ia[ array size ];

for ( int ix = 0; ix < array size; ++ ix ) ia[ ix ] = ix;

массива:

При определении массив можно явно инициализировать, перечислив значения его

const int array size = 3;

элементов в фигурных скобках, через запятую:

int ia[ array size ] = { 0, 1, 2 };

Если м1 явно указ1ваем список значений, то можем не указывать размер массива:

массив размера 3

компилятор сам подсчитает количество элементов:

int ia[] = { 0, 1, 2 };

extern int get size();

buf size и max files константы const int buf size = 512, max files = 20; int staff size = 27;

правильно: константа char input buffer[ buf size ];

правильно: константное выражение: 20 - 3 char *fileTable[ max files-3 ];

ошибка: не константа double salaries[ staff size ];

ошибка: не константное важение int test scores[ get size() ];

Объекты buf size и max files являются константами, поэтому определения массивов input buffer и fileTable правильны. А вот staff size - переменная (хотя и инициализированная константой 27), значит, salaries[staff size] недопустимо. (Компилятор не в состоянии найти значение переменной staff size в момент определения массива salaries.)

Выражение max files-3 может быть вычислено на этапе компиляции, следовательно, определение массива fileTable[max files-3] синтаксически правильно.

Нумерация элементов начинается с 0, поэтому для массива из 10 элементов правильным диапазоном индексов является не 1 - 10, а 0 - 9. Вот пример перебора всех элементов



ia ==> { 0, 1, 2, 0, 0 }

const int array size = 5;

в списке больше значений, компилятор выводит сообщение об ошибке:

int ia[ array size ] = { 0, 1, 2 };

Символьный массив может быть инициализирован не только списком символьных значений в фигурн1х скобках, но и строковым литералом. Однако между этими

i const char cal[] = {C, +, + };

способами есть некоторая разница. Допустим,

const char cal2[] = C++ ;

Размерность массива ca1 равна 3, массива ca2 - 4 (в строковых литералах учит1вается

ошибка: строка Daniel состоит из 7 элементов

завершающий нулевой символ). Следующее определение вызовет ошибку компиляции:

const char ch3[ 6 ] = Daniel ;

Массиву не может быть присвоено значение другого массива, недопустима и инициализация одного массива другим. Кроме того, не разрешается использовать массив

const int array size = 3; int ix, jx, kx;

правильно: массив указателей типа int*

int *iar [] = { &ix, &jx, &kx };

error: массивы ссылок недопустимы int &iar[] = { ix, jx, kx };

int main() {

int ia3{ array size ]; правильно ошибка: встроенные массивы нельзя копировать

ia3 = ia; return 0;

ссылок. Вот примеры правильного и неправильного употребления массивов:

Чтобы скопировать один массив в другой, придется проделать это для каждого элемента по отдельности:

Когда явно указан! и размер, и список значений, возможны три варианта. При совпадении размера и количества значений все очевидно. Если список значений короче, чем заданный размер, оставшиеся элементы массива инициализируются нулями. Если же



1 ... 34 35 36 [ 37 ] 38 39 40 ... 395

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