- •1) Базовые элементы языка с. Алфавит и словарь языка (в1б1, в3б3)
- •2) Основные типы данных. Классификация их типов. Модификация базовых типов. (в1б2, в3б17)
- •3) Константы (в1б3, в3б2)
- •4) Переменные (в1б4, в3б16)
- •5) Структура с-программы. Понятие локальных и глобальных переменных. Функция main(). Директивы препроцессора (# include и #define). Комментарии. (в1б5, в3б1)
- •6) Операции языка с. Арифметические, логические операции. Поразрядные операции. (в1б6, в3б15)
- •7. Операции языка с. Операция присваивания и отношения. Операция определения размера. Оператор последовательного вычисления. (в1б7, в2б30)
- •8. Операции языка с. Условная операция. Операция (), операция []. (в1б8, в3б14)
- •9) Приоритет операций и порядок вычислений (в1б9, в2б29)
- •10) Основные сведения о вводе-выводе. (в1б10, в3б13)
- •11) Ввод-вывод символов (в1б11, в2б28)
- •12) Форматированный ввод-вывод. Модификаторы формата. Спецификаторы преобразования. Подавление ввода. (в3б12, в1б12)
- •13) Операторы языка с. Условные операторы (if, switch). (в1б13, в2б27)
- •14) Операторы цикла (while, for, do while )(в1б14, в3б11)
- •15) Операторы безусловного перехода ( break, continue, go to, return) (в1б15, в2б26)
- •16) Одномерные массивы. (в1б16, в3б10)
- •17) Строковый литерал. Чтение и запись строк. (в1б17, в2б25)
- •18)Двухмерные массивы. Массивы строк (в1б18, в3б9)
- •19) Инициализация массива. (в1б19, в2б24)
- •20) Способы доступа к элементом массива. (в1б20, в3б8)
- •22) Указательные переменные. Операции получения адреса (&) и раскрытие ссылка (*) (в1б22, в3б7)
- •23) Указательные выражения. Адресная арифметика. (в1б23, в2б22)
- •24) Связь массивов и указателей (в1б24,в3б6)
- •25) Функции динамического распределения памяти (в1б25, в2б21)
- •26) Динамическое выделение памяти для массивов. (в1б26, в3б5)
- •27) Функции. Определения функций. Оператор return.( в1б27, в3б20)
- •28) Функции. Прототипы функции. (в1б28, в3б4)
- •29) Функции. Вызов функций: вызов по значению и по ссылке. (в1б29, в2б19)
- •30) Передача массива в функцию. (в1б30, в3б27)
- •31) Классы памяти. Область видимости. (в2б1, в3б28)
- •32) Аргумент функции main(): argv и argc (в2б2, в3б26)
- •33) Рекурсия. (в2б3, в3б29)
- •34) Вызов библиотечных функций(в2б4, в3б25)
- •35) Директива препроцессора #define: создание макрофункций с помощью директивы #define (в2б5, в3б30)
- •36) Директивы условной компиляции #if, #else, #elif, #endif, #ifdef, #ifndef (в2б6, в3б24)
- •37) Понятие структуры. Доступ к членом структуры (в2б7)
- •38) Присваивание структур (в2б8, в3б23)
- •39) Массивы структуры(в2б9)
- •40) Передача членов структур функциям. Передача целых структур функциям. (в2б10, в3б22)
- •41) Указатели на структуры. Средство typedef (в2б11)
- •42) Понятие объединение и перечисления. Битовые поля. (в2б12,в3б21)
- •44) Методы поиска: последовательный и двоичный поиск. (в2б14, в3б20)
- •45) Основы файловой системы. Стандартные потоки. Указатель файла. Открытые файлы. Закрытые файлы. (в2б15)
- •46) Форматированный ввод-вывод в файл (в2б16, в2б17, в3б19)
- •48) Понятие очереди, стеков, связанных списков и деревьев. (в2б12, в3б18)
16) Одномерные массивы. (в1б16, в3б10)
Массив – это структура однотипных элементов, занимающих непрерывную область памяти. Массив имеет имя, тип и размерность. Формат описания:
имя_типа имя [константное выражение]
Константное выражение определяет размер массива, т.е. число элементов в массиве.
Элементы массива обозначаются индексированными именами. Нижнее значение индекса – ноль.
Констант выр. м не указывать, если на этапе объявления происходит инициализация массива:
int x[] = { 1, 3, 5 };
int A[10];
или const n=10;
int A[n];
В Си нельзя определять произвольные диапазоны для индекса. Размер массива, указанный в описании, всегда на 1-цу больше максимального значения индекса.
Доступ к элементам массива производится посредством обращения к конкретному необходимому элементу массива. Например, объявлен массив из 6-ти элементов (int massive[6]), тогда его, например, 4-ым элементом является massive[4] и т.д.
Массив может быть инициализирован при объявлении. Например: int massive[6]={1,2,3,4,5,6}.
17) Строковый литерал. Чтение и запись строк. (в1б17, в2б25)
Самая простая строковая сущность (под строковой сущностью я понимаю нечто, с чем можно работать как с привычной строкой) в С — это так называемый «строковый литерал». Он представляет собой последовательность символов, заключенную в двойные кавычки.
В С работа со строками реализована путем использования одномерного массива типа char.
Символьная строка – одномерный массив типа char, заканчивающийся нулевым байтом. Нулевой байт –
байт, кождый бит которого равен 0. Для него определена символьная константа ’\0’, т.е. если
строка должна содержать n символов, то в описании массива следует указывать n+1 элемент.
Пример:
char str[11];
Строковая константа – последовательность символов, заключенных в ковычки.
Пример:
str = "Строка";
В конце строки не ставится "\0" – это делает компилятор. При инициализации строки символов ее
можно рассматривать как одномерный массив.
char str[] = "Строка";
Можно инициализировать строку через указатель на тип char (присвоить указателю значение строковой
константы). При этом не нужно заранее выделять память для строки:
char *p;
p = "строка" или char *p = "Строка";
Чтение и запись строк
1. Функция scanf() со спецификатором ввода %s – вводит символы до первого пробельного символа.
2. Специальная библиотечная функция gets(), объявленная в файле , позволяет вводить строки,
содержащие пробелы. Ввод оканчивается нажатием клавиши Enter.
Все эти функции ввода строковых данных автоматически ставят в конец нулевой байт. В качестве
параметров в этих функциях используется имя символьного массива.
Пример:
main()
{
//объявление трехсимвольных массивов (трех строк), максимальное количество символов 9
char str1[10], str2[10], str3[10];
clrscr(); // очистка экрана
printf("Пример ввода строк разными способами");
// ввод строки с помощью функции gets
printf("Введите строку 1: ");
gets(str1);
// ввод строки с помощью функции scanf
printf("Велите строку 2: ");
scanf("%s", str2);
printf("Введите строку 3: ");
scanf("%s", str3); }
Вывод строковых данных производится функциями: printf, puts, cout. Данные функции выводят содержание символьного массива до нулевого байта. Также вывод строка можно осуществить с помощью указателя на строку, представляя строку как набор отдельных символов, связанных общим символом.
Тогда строка будет в цикле посимвольно выводиться в помощью функции putchar.
Пример:
// объявление указателя p на строку с инициализацией
char *p = "Hello! ";
/* в цикле while, пока значение указателя не равно концу строки, осуществляется посимвольный вывод строки с "передвижения" указателя на следующий символ строки*/
while (*p! = ’\0’)
putchar(*(p++));