- •Управление esc – последовательность (с примерами)
- •4. Определение констант и их характеристика (const,define,enum)
- •5. Форматные потоки в с. Функции fPrintf(), Fscanf(), и модификации (с примерами). Спецификаторы
- •7. Перегруженные операции.
- •8. Инструкция ветвления. (пример)
- •9. Инструкция switch()
- •10. Применение инструкции switch() для создания текстового меню.
- •11. Инструкция цикла.
- •12. Инструкция перехода.
- •13. Указатели. Операции над указателями. Косвенная адресация.
- •14. Ссылки (пример)
- •15. Статические числовые одномерные
- •16. Статические числовые двумерные массивы.
- •17. Динамическая память.
- •18. Выделение памяти под динамический одномерный и двумерный массив.
- •19. Алгоритм удаления и добавления данных в массив.
- •20. Глобальные, локальные, статические, внешние переменные.
- •21. Классы памяти.
- •22. Формальные и фактические параметры.
- •23. Функции.
- •24. Виды передачи параметров в функцию.
- •25.Функции и массивы
- •26. Функции с переменным числом параметров.
- •27. Шаблоны функции.
- •28.Рекурсии. Фреймы.
- •29. Функция Main()
- •30. Стеки.
- •31. Очереди.
- •33. Строки, как массив символов.
- •34. Функции ввода строковых переменных.
- •35.Основные функции обработки строковых переменных.
- •37. Функции преобразования типов.
- •38. Строки типа string.
- •40. Функции работы с памятью. Memcmp - сравнивает две области памяти
- •41. Структуры
- •42. Вложенные структуры.
- •43. Объединения (union)
- •44.Передача переменных определенных пользователем в функцию.
- •50. Функция определения конца файла.
- •51. Файловый поток.
- •52. Функции tellg и ftell
- •53. Установка файлового указателя
- •55. Обработка текстовых файлов.
- •56. Бинарный файл.
28.Рекурсии. Фреймы.
Рекурсия (recursion) - это процесс, при котором функция вызывает сама себя.
Сведения, приведенные в этом разделе, относятся к автономным (standalone) функциям в программах на Си и С++ (т.е. функциям, не являющимися членами классов). Автономные функции могут использоваться в С++ точно так же, как и в Си. Однако С++ предоставляет больше возможностей
29. Функция Main()
В языке C заданы два встроенных аргумента функции main: argc и argv.
Выглядит это так:
int main(int argc, char *argv[]) {...}
Аргумент argc типа integer содержит в себе количество аргументов командной строки.
Аргумент argv типа char - указатель на массив строк. Каждый элемент массива указывает на аргументы командной строки. Один параметр отделяется от другого пробелами.
argv[0] - полное имя запущенной программы
argv[1] - первая строка записаная после имени программы
argv[2] - вторая строка записаная после имени программы
argv[argc-1] - последняя строка записаная после имени программы
argv[argc] - NULL
В средах разработки фирмы Borland (Borland Builder C++, Borland C++ и т.п.) предусмотрен еще и третий аргумент env, который, так же как и argv является указателем на массив строк, но содержит установки среды:
int main(int argc, char *argv[], char *env[]) {...}
Если необходимо в качестве параметра иметь строку, содержащую пробелы, то ее надо заключить в двойные кавычки. Если аргументом является число, то оно рассматривается как строка. Для работы с ним, как с числом необходимо его преобразовать, используя соответствующую функцию.
Пример:
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char *argv[], char *env[]) {
int i;
printf("Количество аргументов командной строки %d \n", argc);
printf("Аргументы командной строки:\n);
for (i = 0; i < argc; i++)
printf("%s\n", argv[i]);
printf("\nАргументы состояния среды:\n");
for (i = 0; env[i] != NULL; i++)
printf("%s\n", env[i]);
return 0;
30. Стеки.
Стеком (англ. stack) называется хранилище данных, в котором можно работать только с одним элементом: тем, который был добавлен в стек последним. Стек должен поддерживать следующие операции:
push Добавить (положить) в конец стека новый элемент
pop Извлечь из стека последний элемент
back Узнать значение последнего элемента (не удаляя его)
size Узнать количество элементов в стеке
clear Очистить стек (удалить из него все элементы)
Удобнее всего создать класс для работы со стеком, описание которого будет выглядеть примерно так:
Code struct ELEMENT//элемент стека
{ int Content; ELEMENT* Next;};
typedef ELEMENT *LPELEMENT;//указатель на элемент стека
class STACK
{ public:
STACK();//конструктор
~STACK();//деструктор
bool Push(int Content);//добавление элемента
bool Pop(int &Content);//изъятие элемента
void Clear();//очистка стека
int Length();//определение количества элементов в стеке
void OutPut();//Вывод стека
private:
LPELEMENT Start;//Начало стека };
Извлечение элемента:
Code
bool STACK::Pop(int &Content)//Извлекает из стека элемент в переменную Content { //в случае успешного извлечения элемента вернёт true, иначе- false
if(!Start)
return false;
Content=Start->Content;
LPELEMENT Temp=Start;
Start=Start->Next;
delete Temp;
return true;}
Вывод на экран всех элементов:
Code
void STACK::OutPut()//выводит в консоль все элементы стека
{ if(!Start)
{ printf("стек пуст\n");
return; }
LPELEMENT Temp=Start;
while(Temp)
{ printf("%i\n",Temp->Content);
Temp=Temp->Next; }}