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

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

Жанры

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

определяется структура с именем point и переменная-структура с именем start с указанными начальными значениями. Конкретные компоненты структуры можно задавать для инициализации в любом порядке с помощью формы записи .компонент = значение

в списке инициализации, например, struct point end = {.у = 500, .х = 200 };

В объявлении struct entry { char *word; char *def; } dictionary[1000] = { {"a", "first letter of the alphabet"}, {"aardvark", "a burrowing African mammal"}, {"aback", "to startle" } };

объявляется словарь, содержащий 1000 структурных записей, причем

первые три элемента инициализируются как указатели на указанные символьные строки. Используя назначенные инициализаторы, можно записать это следующим образом. struct entry { char *word; char *def; } dictionary! 1000] = { [0].word = "a", (0].def = "first letter of the alplmet", [t].word = "aardvark", [1 J.def = "a burrowing African mammal", [2].word = "aback", [2].def = "to startle" };

или в эквивалентной форме Struct entry { char *word; char *def; } dictionary[ 1000] = { { {.word = "a", .def = "first letter of the alphabet"}, {.word = "aardvark", .def = "a burrowing African mammal"), {.word = "aback", .def = "to startle") );

Автоматическую переменную-структуру можно инициализировать, присвоив ей другую структуру того же типа, например, struct date tomorrow = today;

Здесь объявляется переменная-структура типа date с именем tomorrow, и ей присваивается содержимое (ранее объявленной) переменной-структуры типа date с именем today.

ОбъявлениеКомпонента, которое имеет формат тип имяПоля: n

определяет доле длиной п бит внутри структуры, где п — целое значение. Поля могуг располагаться слева направо на одних машинах и справа налево на других. Если имяПоля опущено, то резервируется указанное число битов, но без ссылки. Если имяПоля опушено и п равно 0, то следующее поле выравнивается по границе следующего блока памяти, где размер блока зависит от реализации. Поле может иметь тип int, signed int или unsigned int. В зависимости от реализации поле типа int интерпретируется как signed или unsigned. К полю нельзя применять адресный оператор (&), и нельзя определять массивы молей. Объединения Общий формат union имя { ОбъявлениеКомпонента ОбъявлениеКомпонента } списокПеременных,

Здесь определяется объединение с заданным именем и компонентами, соот-ветствующими каждому объявлениюКомпонента. Каждый компонент объединения использует общую область памяти, и компилятор обеспечивает резервирова-ние области памяти, достаточной, чтобы вместить самый большой компонент данного объединения.

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

при условии, что объединению было присвоено имя при его определении.

Программист сам должен следить за тем, чтобы значение, считываемое из объединения, соответствовало типу значения, которое было в последний раз сохранено в объединении. Первый компонент объединения можно инициали-зировать, заключив в фигурные скобки начальное значение, которое в случае глобальной union-переменной должно быть константным выражением. union shared { long long int I; long int w[2]; } swap = { Oxffffffff};

Для инициализации другого

компонента нужно указать имя этого компо-нента, как в union shared swap2 = {.w[0] = 0x0, .w[1] = Oxffffffff };

Здесь объявляется union-переменная swap, и ее компоненту I присваивается шестнадцатеричное значение ffffffff.

Автоматическую union-переменную можно также инициализировать, при-своив ей объединение того же типа, например, union shared swap2 = swap; Указатели

Объявление переменной-указателя имеет базовый формат тип *имя,

Идентификатор имя объявляется с типом «указатель на тип»; типом может быть какой-либо базовый тип данных или производный тип данных. Например, int *ip;

объявляет ip как указатель на тип int, и struct entry *ер;

объявляет ер как указатель на структуру entry. Если определен класс Fraction, то Fraction "myFract;

объявляет myFract как объект типа Fraction, или, точнее, myFract используется для хранения указателя на структуру данных объекта после того, как создан экземпляр объекта и он присвоен этой переменной.

Указатели, которые указывают на элементы массива, объявляются для указания на тип элемента, содержащегося в этом массиве. Например, предыдущее объявление ip можно было бы также использовать для объявления указателя на массив целых элементов.

Допускаются также более сложные формы объявлений указателей. Напри-мер, char *tp[100];

объявляет tp как массив из 100 указателей на тип char, и struct entry (*fnPtr) (int);

объявляет fnPtr как указатель на функцию, которая возвращает структуру entry и принимает один аргумент типа int.

Можно проверить, является ли указатель пустым (null), сравнив его с кон-стантным выражением, значение которого равно 0. В реализации можно выб-рать внутреннее представление null-указателя в виде значения, отличного от 0. Однако сравнение между указателем с таким внутренним представлением и константным значением 0 должаю показывать равенство.

Преобразование указателей в целые значения и целых значений в указате-ли, а также размер целой переменной, необходимой для хранения указателя, зависят от типа машины.

Тип «указатель на void» — это обобщенный тип указателя. Язык Objective-C гарантирует, что указатель любого типа может быть присвоен void-указателю, и затем можно выполнить обратное присваивание без изменения его значения.

Тип id — это обобщенный указатель на объект. Любой объект любого класса может быть присвоен id-псременной, и наоборот.

За исключением этих двух особых случаев присваивание указателей различного типа не допускается, и обычно при такой попытке компилятор выдает предупреждающее сообщение. Перечислимые типы данных

Общий формат enum имя { епит_ /, епит_2,..} списокПеременнык,

Перечислимый тип с заданным именем определяется с перечисляемыми значениями enum l, епит_2,..., каждое из которых является идентификатором или идентификатором, после которого следует знак равенства и константное выра-жение. Можно также объявить спиажПеременных (с необязательными начальными значениями), и эти переменные будут иметь тип enum имя.

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

Графиня с изъяном. Тайна живой стали

Лин Айлин
Фантастика:
фэнтези
героическая фантастика
киберпанк
5.00
рейтинг книги
Графиня с изъяном. Тайна живой стали

Позывной "Князь" 2

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

Двойник короля 14

Скабер Артемий
14. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 14

Бальмануг. (Не) Любовница 2

Лашина Полина
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. (Не) Любовница 2

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Печать зверя

Кас Маркус
7. Артефактор
Фантастика:
городское фэнтези
аниме
5.00
рейтинг книги
Печать зверя

Сирийский рубеж

Дорин Михаил
5. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж

Deus vult

Зот Бакалавр
9. Герой Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Deus vult

Кодекс Охотника. Книга ХХХ

Винокуров Юрий
30. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга ХХХ

АН (цикл 11 книг)

Тарс Элиан
Аномальный наследник
Фантастика:
фэнтези
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
АН (цикл 11 книг)

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

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

Апокриф

Вайс Александр
10. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Апокриф

Бестужев. Служба Государевой Безопасности

Измайлов Сергей
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов