
- •Поддержка модульности. Функции, параметры, передача параметров. Область видимости и область существования. Встроенные и собственные типы данных. Структура программы.
- •Директивы препроцессора. Имена. Объявление констант и переменных. Оператор присваивания.
- •3. Условные операторы. Операторы циклов. Операторы: break, continue. Инкрементные и декрементные операторы. Арифметические операции, в том числе целочисленные. Выражения и порядок вычисления.
- •Цикл for
- •Цикл while
- •Оператор continue
- •Операции увеличения (инкремента) и уменьшения (декремента)
- •Порядок вычислений
- •4. Объявление функций, оператор return. Передача параметров. Параметры по умолчанию.
- •5. Встроенные типы данных и операции над ними. Тип void. Перечисления.
- •Int float double char bool – встроенные типы данных
- •6. Указатели и действия над ними.
- •7. Явные и неявные преобразования типа. Составные типы данных и действия над ними.
- •8. Класс памяти и модификатор const.
- •9. Работа с динамической памятью. Назначение динамического выделения памяти. Операторы new и delete. Время жизни динамических объектов.
- •3) Операторы new и delete.
- •10. Inline – функции, шаблоны и перегрузка имен. Роль inline – функций и шаблонов. Объявление inline – функций и шаблонов. Ограничения связанные с inline – функциями.
- •Inline-функции
- •11. Перегрузка имен функций и понятие сигнатуры.
5. Встроенные типы данных и операции над ними. Тип void. Перечисления.
Int float double char bool – встроенные типы данных
Элементарные типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях таких как + - / *. Для их описания определены следующие ключевые слова:
bool (логический);
char (символьный);
int (целый);
float (вещественный);
double (вещественный с двойной точностью).
Первые три типа называют интегральными (целыми), последние два - типами с плавающей точкой.
Операции: + - * /
int f(int a, int b)
{
if(a==b) return 1;
else
return 0;
}
Тип void. Тип функции, который не возвращает значение, т.е. в конце функции нет return. Универсальный тип указателей. Еще используется в операциях приведения типов.
int f(int &k){
k*=2;
return k;
}
void main()
{
int y=3, k;
k=f(y);
cout<<y;
}
Перечисления.
Перечисление — это набор именованных целых констант.
Перечисление в общем виде выглядит так:
enum [ имя_типа ] { список_констант };
enum color { RED, GREEN, BLUE }; - именованные перечисления.
void f(color c)
{
switch(c){
case RED:
…
break;
case BLUE:
…
break;
}
}
6. Указатели и действия над ними.
int * p0 = &i; // - указатель на переменную
Указатель — это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера. Например, если одна переменная содержит адрес другой переменной, то говорят, что первая переменная указывает (ссылается) на вторую.
С указателями можно выполнять следующие операции: разадресация (*), присваивание, сложение с константой, вычитание, инкремент (++), декремент (- -), сравнение, приведение типов. При работе с указателями часто используется операция получения адреса (&).
int a[10]
int *pa = a;
*pa = 3; //0 элементу массива присвоили 3
*(pa+2) = 5; //2 элементу массива присвоили 5
int *pa=a;
*(pa+2)=5;
*pi = 5;
void *vi = &i;
void *pa = pa;
int *ppi = (int*)vi; приведение типов
7. Явные и неявные преобразования типа. Составные типы данных и действия над ними.
Явные и неявные преобразования типов.
Еще один способ явного преобразования типов данных:
float(15) / 2 // результат равен 7.5, число 15 преобразуется в вещественный тип данных float.
double(15) / 2 // результат равен 7.5 – тоже самое!!!
Если указывать дробный тип то будет получаться не целое число, в это и заключается явное преобразование типов.
Неявное преобразование
Double b=1/2 – получаем double хоть и делим int/int!
Int a=3.14
Double d=2.
Составные типы данных и действия над ними.
Массивы, классы, структуры.
Действия над массивами(можно на одно и то же число разделить массивы): *+-
Над классами мы может делать только наследование, и со структурами тоже.
8. Класс памяти и модификатор const.
Спецификаторы класса памяти
Стандарт языка поддерживает четыре спецификатора класса памяти:
• auto — автоматическая (локальная), динамическая переменная. Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены.
• static — статическая переменная (глобальная). Статические переменные имеют такую же область действия, как автоматические, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.
• extern — внешняя (глобальная) переменная. Внешние переменные доступны везде, где описаны, а не только там, где определены. Включение ключевого слова extern позволяет функции использовать внешнюю переменную, даже если она определяется позже в этом или другом файле.
• register — регистровая переменная (локальная). Это слово является всего лишь «пожеланием» компилятору помещать часто используемую переменную в регистры процессора для ускорения программы.
Auto, register – локальные классы памяти.
Extern, static - глобальные
По умолчанию любая глобальная функция extern.
Int n=2;
[extern] int n=2;
For(register int i=0; i<1000000; i++)
{
}
Общая форма объявления переменных при этом такова:
спецификатор_класса_памяти тип имя переменой;
Модификатор const
Модификатор const показывает, что значение переменной изменять нельзя.
Const [тип] имя = значение;
Если тип константы не указан, то тип по умолчанию integer, а если указан, то берется тот тип, который указан в [ ].
Const N=5;
Const double PI=3.14