- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследовние
- •3) Базовые конструкции
- •4) Константы
- •5)Общая структура программы
- •Int main() - обьявление функции с именем main (возвращающ. Целочисл значение)
- •11)Классы памяти (влияет на область видимости и время жизни переменной)
- •12)Описание и определение функций
- •13)Назначение прототипа функции-
- •14)Операторы
- •15)Массивы-конечная совокупность данных одного типа
- •21)Пример,swap
- •27)Работа с указателями на примере строк
- •28)Конкатенация строк
- •29)Удалить последний символ строки
- •30)Сегмент данных для хранения констант
- •31)Функции стандартной библиотеки для работы со строками string.H
- •21) Функция strtok
- •22) Указатели на функции.
- •33)Пример использования массивов указателей
21)Пример,swap
void swap (int x; int y) {
int tmp=x; x=y; y=tmp; }
При вызове функции swap создаются 2 локальные переменные(изменяются лок. переменные). Чтобы ф-ия изменяла внешние переменные переменные должны быть или глобальные,либо должны передавать их адреса.
22)Указатели –это переменная, содержащая адрес памяти .
Значение указателя это целое число, множество допустимых значений этого множества адресов. Множество допустимых значений определяется видом указателя
нетипизированный
типизированный на данные
указатель на функцию
указатель-это произвольные типы, всегда должен быть указан базовый тип, показывающий на что ссылается указатель
24)Случаи, когда нельзя обойтись без указателей
1-Когда нужно работать с конкретным адресом.
2-Когда функция должна изменять передаваемые ей аргументы.
3-Когда нужно вернуть массив то функция может вернуть адрес его 0 элемента
4-вызов функции должен находиться в левой части присваивания
2
5)
Динамическое распределение памяти
ОС позволяет программе захватывать свободные блоки. Стартовый код создает списки свободных и занятых блоков в куче (В каждой записе о блоке хранится адрес его начала и размер в байтах) Для динамического распр. памяти в стандартной библ.. stdlib.h
void malloc(t size); t-unsigned int, ф-я malloc пытается захватить в куче блок размером size, возвращает адресс блока, если неудача то возвр. NULL.
new and delete в С++
new — оператор, обеспечивающий выделение динамической памяти в куче. При помощи оператора new[] невозможно напрямую перераспределить уже выделенную память. Для увеличения или уменьшения размера блока памяти нужно выделить новый блок нужного размера, скопировать данные из старой памяти и удалить старый блок.
Оператор delete возвращает память, выделенную оператором new, обратно в кучу. Вызов delete должен происходить для каждого вызова new, дабы избежать утечки памяти. После вызова delete объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться.
27)Работа с указателями на примере строк
Вывод строки на экран:
#include <iostream.h>
void show_string(char *string)
{ while (*string != '\0')
{ cout<<*string; string++; } }
void main(void)
{ show_string("Учимся программировать на языке C++!"); }
Определения количества символов в строке:
#include <iostream.h>
int string_length(char *string)
{ int length = 0; while (*string != '\0')
{ length++; string++; } return(length); }
void main(void)
{ char title[] = "Учимся программировать на языке C++"; cout << title << " содержит " << string_length(title) << " символов"; }
Сравнение строк:
Функция strcmp
#include ‘string.h’ int strcmp(const char *str1, const char *str2); Функция strcmp() сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее следующим образом от результата сравнения. Значение Результат сравнения строк Меньше нуля str1 меньше str2 Нуль str1 равен str2 Больше нуля str1 больше str2 Пример
int strcmp(const char *cs, const char *ct)
{
signed char __res;
while (1) {
if ((__res = *cs - *ct++) != 0 || !*cs++)
break;
}
return __res;
}
