АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ОБЪЕДИНЕНИЯ. СТРОКОВЫЕ ЛИТЕРАЛЫ

Читайте также:
  1. P.S.:Регионализация и интеграция: интеграционные объединения.
  2. Второй этап объединения.
  3. Государство и общественные объединения.
  4. Государство и общественные объединения.
  5. Объединения.
  6. Особенности и Предпосылки объединения.

Объединение (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” создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. Знак равенства перед строковым литералом означает инициализацию, а не присваивание. Операция присваивания одной строки другой не определена (поскольку строка является массивом(и может выполняться с помощью цикла или функций стандартной библиотеки).


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)