- •1) Принципы фон Неймана
- •2) Общая схема устройства компьютера
- •5) Структура программы на Паскале. Используемые в языке символы. Идентификаторы, ключевые слова, комментарии.
- •12) Массивы
- •15) Назначение параметров
- •16. Локальные, глобальные переменные. Время жизни и область видимости переменных;
- •18 Cтруктуры в си
- •19. Основные директивы препроцессора. Компиляция, линковка;
- •4.2.2. Директива define
- •20. Стандартная библиотека с:
18 Cтруктуры в си
Структуры в си ( c ) - это объединенные данные, у которых есть некоторая логическая взаимосвязь. В отличие от массивов, структуры могут содержать данные разных типов. Вот пару примеров структур в си ( c ): структура класс (имя учащегося, буква класса, средний балл); структура футбольная команда (тренер, название команды, место в турнирной таблице). Т.е. структуру вы будете использовать довольно часто. Теперь давайте рассмотрим, как описываются структуры в си:
struct klass { char name[20]; char klass_name; float bal; };
struct
Любая структура в языке си ( c ) должна начинаться с ключевого слова - struct, которое сообщает компилятору, что тут у нас будет структура. Все данные в структуре (struct) пишутся в фигурных скобках, и в конце ставится запятая с точкой (;). Советую сразу ставить запятую с точкой, что бы не было ошибок. Как вы видите, в структуре (struct) у нас находятся данные различных типов, но они объединены в логическую связь, так как в моем примере они являются определенным школьным классом. Данные в структуре должны иметь уникальные имена, но в различных структурах можно использовать одинаковые названия. Структура, которая создана выше не занимает в памяти компьютера места, так как мы, на самом деле, просто создали свой тип данных. Объявление структуры ни чем не отличается от объявления любого типа данных в языке си ( c ). Вот пример:
struct klass a, b[5], *c;
Мы объявили переменную а типа struct klass, массив b, состоящий из 5 элементов типа struct klass и указатель на переменную struct klass. Так же можно объявлять переменные сразу после объявления структуры:
struct klass { char name[20]; char klass_name; float bal; } a, b[5], *c;
А какие же операции можно проделывать со структурами? Ответ на этот вопрос лучше перечислить по пунктам:
• присваивание полю структуры значение того же типа
• можно получить адрес структуры. Не забываем операцию взятия адреса (&)
• можно обращаться к любому полю структуры
• для того, что бы определить размер структуры можно использовать операцию sizeof()
19. Основные директивы препроцессора. Компиляция, линковка;
Директива include
Директива включает в текст программы содержимое указанного файла и имеет две формы:
#include"имя файла"
#include <имя файла>
Имя файла должно соответствовать соглашениям операционной системы и может состоять только из имени файла, либо из имени файла с указанием пути к этому файлу. Способ поиска файла зависит от того, заключено ли его имя в двойные кавычки или в угловые скобки. Если имя файла задано в угловых скобках, поиск файла проводится в специальном каталоге. Обычно таким каталогом является каталог INCLUDE интегрированной среды разработки (IDE). Если имя файла указано в кавычках, то поиск файла начинается с текущего каталога, а если файл не найден, поиск продолжается в каталоге INCLUDE.
Директива include широко используется для включения в программу так называемых заголовочных файлов, содержащих прототипы библиотечных функций, и поэтому большинство программ на С начинаются с этой директивы.
Заголовочный файл (объект-заголовок) снабжает компилятор необходимой информацией о данных и функциях, которые могут использоваться в программе, имеет расширение .h (header) и представляет собой текстовый файл. Заголовочный файл может содержать определение типов, прототипы функций, объявление внешних переменных (extern), директивы препроцессора и комментарии.
Любая C-программа должна содержать хотя бы одну директиву. Так, для реализации ввода/вывода должна присутствовать директива:
#include <stdio.h>
Файл stdio.h (standard input/output header) содержит необходимую информацию о средствах ввода/вывода информации:
• определение типа данных FILE (поток ввода/вывода идентифицируется указателем на переменную типа FILE);
• описание потоков stdin и stdout (ввод/вывод); по умолчанию эти файлы связаны с терминальным оборудованием (ввод с клавиатуры, вывод на дисплей);
• файл вывода сообщений об ошибкахstderr;
• определение макроса NULL (нулевой указатель, т. е. значение, не указывающее ни на какой объект);
• определение макроса EOF (признак конца файла).
Для реализации других действий в программу с помощью данной директивы следует включать иные заголовочные файлы, например:
• преобразование строк #include <string.h>
• работа с математическими функциями #include <math.h>
• библиотечные функции #include <stdlib.h>