
- •1.K&r c. Ansi c и iso c. Стандарт c99
- •Структура компилятора
- •3.Проблемы использования языка Си.
- •5.Числовые константы. Символические константы.
- •6.Идентификаторы. Константные переменные. Основные типы.
- •7.Указатели. Ссылки. Изменение типа данных.
- •8.Одномерные массивы. Символьные массивы.
- •9.Многомерные массивы.
- •10.Структуры.
- •11.Ключевое слово union.
- •12.Переименование типов (typedef).
- •13.Выражения.
- •14.Арифметические операции. Логические операции.
- •15.Операции присвоения.
- •16.Операции отношения. Адресные операции.
- •Адресные операции
- •17.Операции “?:”, sizeof, (тип)
- •18.Составной оператор. Оператор-выражение.
- •19.Условный оператор if. Оператор-переключатель switch. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) { оператор_1; оператор_2; … }
- •Оператор варианта switch
- •20.Операторы циклов while и do-while.
- •21.Оператор цикла for. Оператор продолжения continue.
- •22.Определение функции. Оператор возврата return. Вызов функции.
- •23.Функция main.
- •24.Поименованные константы и замена идентификаторов. Макросы.
- •If (выражение)
- •25.Включение файлов. Условная компиляция. Включение файла
- •26.Команда error. Команда pragma.
- •27.Обработка особых ситуаций. Обработка try, перехват catch, Спецификация особой ситуации throw.
- •28.Функции-подстановки (inline).
- •29.Операция создания объекта new. Операция delete. Операция new
- •Операция delete
- •30.Инкапсуляция. Наследование.
- •31.Полиморфизм.
- •32.Классы. Члены класса.
- •33.Конструктор. Деструктор. Функции-члены.
- •34.Операция доступа к области видимости “::”. Указатель this.
9.Многомерные массивы.
Многомерные массивы задаются указанием каждого измерения в квадратных
скобках, например, оператор
int matr [6][8]:
задает описание двумерного массива из 6 строк и 8 столбцов. В памяти такой
массив располагается в последовательных ячейках построчно. Многомерные
массивы размещаются так, что при переходе к следующему элементу быстрее
всего изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j], или более экзотическим способом: *(matr[i]+j) или *(*(matr+i)+j). Это возможно, поскольку matr[i]
является адресом начала i-й строки массива.
При инициализации многомерного массива он представляется либо как массив из
массивов, при этом каждый массив заключается в свои фигурные скобки (в этом
случае левую размерность при описании можно не указывать), либо задается об
щий список элементов в том порядке, в котором элементы располагаются в памяти:
int mass2 [][2] = { {1. 1}. {0. 2}. {1. 0} }:
int mass2 [3][2] = {1. 1. 0. 2. 1. 0}:
10.Структуры.
в отличие от массива, все элементы которого однотипны, структура может содержать элементы разных типов. В языке C++ структура является видом класса
и обладает всеми его свойствами, но во многих случаях достаточно использовать
структуры так, как они определены в языке С:
struct [ имя_типа ] {
тип_1 элемент_1:
тип_2 элемент_2;
тип^п элемент^п;
} [ список^описателей ];
Элементы структуры называются полями структуры и могут иметь любой тип,
кроме типа этой же структуры, но могут быть указателями на него. Если отсутствует имя типа, должен быть указан список описателей переменных, указателей
или массивов. В этом случае описание структуры служит определением элементов этого списка:
// Определение массива структур и указателя на структуру:
struct {
char f1o[30]:
int date, code:
double salary:
}staff[100]. *ps: Имя структуры можно использовать сразу после его объявления (определение
можно дать позднее) в тех случаях, когда компилятору не требуется знать размер
структуры, например:
struct List;. // объявление структуры List
struct Link{
List *p; // указатель на структуру List
Link *prev. *succ; // указатели на структуру Link
}:
struct List { /* определение структуры List */};
Это позволяет создавать связные списки структур.
Для инициализации структуры значения ее элементов перечисляют в фигурных
скобках в порядке их описания:
struct{
char fio[30];
int date, code;
double salary;
}worker = {"Страусенке". 31. 215. 3400.55};
11.Ключевое слово union.
Объединения — это тип класса, в котором все данные разделяют одну и туже область памяти. В языке c++ объединение может включать как функции-, так и данные- члены. Все члены объединения открыты по умолчанию. Для создания закрытых элементов необходимо использовать ключевое слово private. Общая форма объявления объединения выглядит следующим образом.
union имя_класса {
//Открытые члены по умолчанию.
private:
//Закрытые члены.
} список_объектов;
В языке C объединения могут содержать только данные-члены и ключевое слово private не поддерживается.
Элементы объединения перекрывают друг друга. Например, в записи
union tom {
char ch;
int x;
} t;
объявляется объединение tom, которое предполагает следующее расположение памяти (при использовании двухбайтовых целых).
Как и в классе, на отдельные переменные, составляющие объединение, можно ссылаться с помощью оператора "точка". Оператор "стрелка" используется для доступа к объединению с помощью указателя.
Применительно к объединениям существуют несколько ограничений. Объединение не может наследовать любые другие классы любого типа. Объединение не может быть базовым классом. Объединение не может иметь виртуальные функции-члены. Никакие члены не могут быть объявлены как статические. Объединение не может иметь в качестве члена объект, перегружающий оператор "равно" (=). Наконец ни какой объект не может быть членом объединения, если класс этого объекта явно определяет функцию конструктора или деструктора. (иначе говоря, приемлемы объекты, которые имеют только стандартные конструкторы и деструкторы.)
В языке C++ существует специальный тип объединения, называемый анонимным объединением. В анонимном объединении не содержится имени класса и не объявляются никакие объекты. Анонимное объединение просто уведомляет компилятор о том, что его переменные-члены должны иметь одну и туже область памяти. Однако к самим переменным можно обращаться напрямую, не прибегая к обычному синтаксису операторов "точка" и "стрелка".
union {
int a;
float f;
};
//...
a =10; //доступ к переменной a
cout << f; //доступ к переменной f
Анонимные объединения должны содержать только данные, никакие функции-члены не допускаются. Анонимное объединение, действующее в области видимости, определённой с заданным пространством имён (namespace), должно быть объявлено с использованием модификатора типа данных static.