|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ОБЪЕДИНЕНИЯ. СТРОКОВЫЕ ЛИТЕРАЛЫ
Объединение (union) – представляет собой частный случай структуры, все поля которой располагаются по одному и тому же адресу. Формат описания такой же, как у структуры, только вместо ключевого слова struct используется слово union. Длинна объединения равна наибольшей из длин его полей. В каждый момент времени в переменной типа объединение хранится только одно значение, и ответственность за его правильно использование лежит на программисте. Объединения применяют для экономии памяти в тех случаях, когда известно, что больше одного поля одновременно не требуется. Пример: #include <iostream> Using namespace std; Int main () { Enum paytype {CARD, CHECK}; Paytype ptype; Union payment { Char card[25]; Long check; } Info; // присваивание значений info и ptype Switch (ptype) { Case CARD: cout «”Оплата по карте:”«info.card;break; Case CHECK: cout «“Оплата чеком:”«info.check;break; } Return 0; } Объединение часто используют в качестве поля структуры, при этом в структуру удобно включить дополнительное поле, определяющее, какой, именно элемент объединения используется в каждый момент. Имя объединения можно не указывать, что позволяет обращаться к его полям непосредственно. Пример 2: #include <iostream> Using namespace std; Int main () { Enum paytype {CARD, CHECK}; Paytype ptype; Union payment { Char card[25]; Long check; } Info; // присваивание значений info и ptype Switch (ptype) { Case CARD: cout «”Оплата по карте:”«info.card;break; Case CHECK: cout «“Оплата чеком:”«info.check;break; } Return 0; } СТРОКИ Строка представляет собой массив символов, заканчивающийся нуль-символом. Нуль-символ – это символ с кодом, равным 0, что записывается в виде управляющей последовательности ‘\0’. По положению нуль-символа определяется фактическая длина строки. Строку можно инициализировать строковым литералом. Под строку «Vasja» выделяется 10 байт, 5 из них которых занято под символы строки, а шестой – под нуль-символ. Char str[10]=”Vasja”; // выделено 10 элементов с номерами от 0 до 9 // первые элементы – ‘V’, ‘a’, ‘s’, ‘j’, ‘a’, ‘\0’ Если строка при определении инициализируется, её размерность можно опускать (компилятор сам выделит соответствующее количество байт): Char str[] = “Vasja”;// выделено и заполнено // 6 байт. Оператор char*str=”Vasia” создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. Знак равенства перед строковым литералом означает инициализацию, а не присваивание. Операция присваивания одной строки другой не определена (поскольку строка является массивом(и может выполняться с помощью цикла или функций стандартной библиотеки). Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |