- •Лекция 3 Базовые и производные типы
- •Представление данных
- •Атрибуты данных
- •Типы данных
- •Базовые типы
- •Производные типы
- •Скалярные типы
- •Структурированные типы
- •Описание информационного объекта в программе Определение и объявление объекта
- •Примеры описаний программных объектов
- •Определение и инициализация переменных целых типов
- •Определение и инициализация переменных вещественных типов
- •Определение и инициализация переменных булевского типа
- •Определение и инициализация переменных символьного типа
- •Определение и инициализация переменных-указателей
- •Определение и инициализация переменных-ссылок
- •Форматы некоторых производных типов и их интерпретация
- •Класс памяти информационного объекта
- •Область действия идентификатора информационного объекта программы
- •Примеры использования переменных разных классов памяти
- •Пространство имен
- •Основные правила написания и оформления программ
Определение и инициализация переменных целых типов
int k, ix, iy=1, iz; //определение и инициализация переменных int i = 0xabcd, j=04567, k (1); //0xabcd – значение в 16-ой с/с; 04567 – в 8-ичной с/с unsigned uk; // эквивалентно записи unsigned int uk;
short shk, shl, shm = 4; // эквивалентно записи short int shk, shl, shm=4; unsigned short ushk; //в идентификаторе переменной как бы «кодируем» ее тип
long lk; // эквивалентно записи long int lk; unsigned long ulk (12345); //определение и инициализация переменной
int iarray[10]; //определение массива из 10 значений элементов // iarray[0] - iarray[9] типа int
При обработке оператора инициализации переменной компилятор выделяет ей память в соответствии с типом и инициализирует указанным значением.
Определение и инициализация переменных вещественных типов
float x = 4.7; //или float x (4.7);
double y = 3.141592, z = 0.6E-02;
float fx (3);
double dy (3.141592);
Определение и инициализация переменных булевского типа
bool b( true); // хотя компилятор не выдает ошибку и при инициализации bool b(1);
bool b1 = false;
bool b2 = bool (-25); //b2 получит значение true
Пример использования переменных булевского типа:
-
int main() {
bool b = false;
cout << “b = ” << b << endl; //0
return 0;
}
int main() {
bool b = false;
cout << “b = ”; if (b) cout << ”true”;
else cout << ”false”;
cout << endl; return 0; }
Определение и инициализация переменных символьного типа
char ch1 (’:’), symbol =’d’;
char c1=58; //числовой код символа « : », однако инициализируя так переменную, /* мы уменьшаем или даже вообще ликвидируем такое свойство программы, как «переносимость»*/ cout << c1 <<” ” << ch1 << endl; // выведет : :
char first =’\n’; //инициализация ESC-последовательностью \n char ch2 = ’\’’; // инициализация символом «’»
cout << ch2 << endl; // вывод на экран символа «’»
char ch3 = ’\х3f’, с3(’?’); // ESC-последовательность \х3f задает в 16 с/с код символа «?» // \х3f = 3f16 = 3*16+f = 3*16+15 = 6310
cout << ch3 << ” ” << c3 << endl; //выведет ? ?
cout << "\x3f \? "; // выведет ? ?
cout << ‘\77 ‘ << endl; // выведет ?
Эквивалентные операторы:
cout << ‘z’ и cout.put(‘z’); !!!
Определение и инициализация переменных-указателей
Можно определить переменные для хранения адресов областей памяти.
Указатель – переменная, содержащая адрес. Тип указателя определяет тип данных, на который он может ссылаться. По описанию указателя компилятор получает информацию:
-
о длине области памяти, на которую ссылается указатель (которую занимает переменная, на которую он ссылается);
-
о способе интерпретации данных в этой области памяти.
Указатель может ссылаться на константу или на переменную и сам может быть константой или переменной.
Примеры указателей:
int i; //определение переменной целого типа
double d; // определение вещественной переменной
const int ci = 1; //целая типизированная константа
int *pi=&i; //определение и инициализация указателя pi на переменную типа int
*pi = 5; //присваивание значения переменной i //с использованием операции разыменования *
double *pd = &d; // определение и инициализация указателя pd на переменную типа double
*pd = 7.8; //присваивание переменной d значения // через разыменование значения указателя pd
const int *pci; //указатель pci на константу типа int
int *const cp = &i; //указатель-константа cp на переменную типа int const int *const cpc = &ci; //указатель-константа cpc на константу типа int void f (int a) {…..} //определение функции с аргументом типа int, ничего не возвращающей
void (*pf)(int); //указатель на функцию с аргументом типа int, ничего не возвращающую
pf = f; //присваивание указателю на функцию pf адреса функции f
Особый тип указателя – указатель на void (void говорит об отсутствии данных о размере объекта в памяти). Множество значений этого типа пусто. Указателю на void можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями. Указатель на void не может быть разыменован. При использовании указателя на void необходимо явное приведение типа указателя.
Тип void используется:
-
для определения функций, которые не возвращают значения,
-
для указания пустого списка аргументов функции,
-
как базовый тип для указателей
-
в операции приведения типа.