Чтение онлайн

на главную - закладки

Жанры

Программирование на Objective-C 2.0
Шрифт:

В определении массива может содержаться любой базовый тип данных или любой производный тип данных. Массивы функций не допускаются (хотя разрешается использовать массивы указателей на функции).

Объявление массива имеет следующий основной формаi. тип имя[n] = { Выражение инициализации, Выражение_инициализации, ..);

Выражение п определяет число элементов массива с этим именем, и его можно опустить, если задан список начальных значений. В этом случае размер массива определяется числом заданных начальных значений или элементом с максимальным указанным номером, если используются назначенные инициализаторы.

Если определяется глобальный массив, каждое начальное значение должно быть константным выражением. Число значений в списке инициализации мо-жет быть меньше числа элементов массива (но не больше). Если задано меньше значений, то инициализируется только соответствующее число элементов массива; остальным элементам присваивается значение 0.

Особым случаем инициализации массива являются массивы символов, ко-торые можно инициализировать с помощью константной символьной строки. Например, char today(] = "Monday";

объявляет today как массив символов. Элементы этого массива инициализируются в виде начальных значений соответственно символами 'М'.'о', 'n', 'd', 'а', 'у' и '\0\

Если объявить явным образом размер массива, не оставив элемента для конечного нуль-символа, то компилятор не поместит нуль-символ в конце массива. char today[6] = "Monday";

В этом объявлении today является массивом из шести символов, и его эле-ментам присваиваются соответственно символы ’М\ 'o', *n', ЧГ, 'а' и ’у’.

Указывая элементы в прямоугольных скобках, можно инициализировать конкретные элементы массива в любом порядке. Например, ниже объявляется массив из Ю элементов с именем а (число элементов массива определяется элементом с максимальным указанным номером), а также задается начальное значение х + 1 (1234) для последнего элемента и значения 1,2,3 соответственно для первых трех элементов. int х = 1233; int а[] = { |9] = х + 1, [2] = 3, [1] = 2, [0] = 1 }; Массивы переменной длины

Внутри функции, метода или блока можно задать размер массива, используя выражение, содержащее переменные. В этом случае размер вычисляется на этапе выполнения. Например, функция int makeVals (int n) { int valArray[n]; }

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

Объявление многомерного массива имеет основной формат тип имя[n] = [d1][d2]...[dn] = списокИнициализации

Здесь определяется, что массив с этим именем содержит dl xd2x...x dn эле-ментов указанного типа. Например, int three_d [5] [2] [20];

определяет трехмерный массив three_d, содержащий 200 целых элементов.

Отдельный элемент многомерного массива указывается набором индексов каждой размерности, каждый из которых заключен в отдельные прямоуголь-ные скобки. Например, выражение three.d [4][0][15] = 100;

присваивает значение 100 указанному элементу массива three_d.

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

Ниже матрица определяется как двумерный массив, содержащий четыре строки и три столбца. int matrix[4][3] = {{1,2,3}, { 4, 5, 6 }, { 7, 8, 9 } };

Элементам первой строки матрицы присваиваются соответственно значе-ния 1,23; элементам второй строки — 4,5,6; и элементам третьей строки — 7, 8, 9. Элементам четвертой строки присваивается значение 0, поскольку для этой строки значения не заданы. Объявление int matrix[4][3] = { 1,2, 3, 4, 5, 6, 7, 8,9};

инициализирует матрицу, содержащую те же значения, поскольку элементы многомерного массива инициализируются в порядке размерностей, то есть от левой размерности к правой. Объявление int matrix[4][3] = {1}, {4}, {7}};

присваивает 1-му элементу 1-й строки матрицы значение 1, 1-му элементу 2-й строки - значение 4 и I -му элементу 3-й строки - значение 7. Всем остальным элементам присваивается по умолчанию значение 0.

И, наконец, объявление int matrix[4][3] = {[0][0] = 1, [1][1] = 5, [2][2] = 9};

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

Для структуры с заданным именем указывается, что она содержит компоненты в соответствии с каждым объявлениемКомпонента. Каждое такое объявление содержит указание типа, после которого следует список из одного или нескольких имен компонентов.

Переменные можно объявить непосредственно во время определения структуры, указав их перед завершающим символом «точка с запятой», или их можно объявить в дальнейшем, используя формат struct имя список именПеременнык,

Этот формат нельзя использовать, если в определении структуры не указано имя. В этом случае все переменные структуры должны быть объявлены с помощью определения.

Формат инициализации переменной-структуры аналогичен формату для массивов. Компоненты структуры можно инициализировать, заключив список начальных значений в фигурные скобки. Каждое значение в этом списке должно быть константным выражением, если инициализируется глобальная структура.

В объявлении struct point { float х; float у; } start = {100.0, 200.0};

Поделиться:
Популярные книги

Господин из завтра. Тетралогия.

Махров Алексей
Фантастика:
альтернативная история
8.32
рейтинг книги
Господин из завтра. Тетралогия.

Петля, Кадетский Корпус. Книга четвертая

Алексеев Евгений Артемович
4. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский Корпус. Книга четвертая

На границе империй. Том 10. Часть 2

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 10. Часть 2

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Я не царь. Книга XXIV

Дрейк Сириус
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не царь. Книга XXIV

Воронцов. Перезагрузка. Книга 2

Тарасов Ник
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 2

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Путёвка в спецназ

Соколов Вячеслав Иванович
1. Мажор
Фантастика:
боевая фантастика
7.55
рейтинг книги
Путёвка в спецназ

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Древесный маг Орловского княжества

Павлов Игорь Васильевич
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества

Санек

Седой Василий
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Санек

Московское золото и нежная попа комсомолки. Часть Пятая

Хренов Алексей
5. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Пятая

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2