Алфавит языка Си

ОГЛАВЛЕНИЕ

 

1. Общая характеристика языка Си....................................... 2

2. Алфавит языка Си............................................................... 2

3. Операции и выражения...................................................... 6

4. Операторы.......................................................................... 12

5. Структура программы....................................................... 19

6. Статические массивы........................................................ 31

7. Указатели............................................................................ 33

8. Стандартная библиотека Си............................................. 45

9. Составные типы данных.................................................. 88

10. Директивы препроцессора........................................... 100

11. Модели памяти.............................................................. 108

12. Динамические структуры данных............................... 112

13. Классы............................................................................ 120

Рекомендуемая литература................................................. 129


1. Общая характеристика языка Си

 

Си – язык системного программирования; его принято относить к языкам среднего уровня, позволяющим выполнять как стандартные высокоуровневые подпрограммы, так и ассемблерно‑ориентированный код.

Можно выделить следующие основные особенности Си:

· легкий доступ к аппаратным средствам компьютера, позволяющий писать высокоэффективные программы;

· высокая переносимость написанных на Си программ — как между компьютерами с различной архитектурой, так и между различными операционными средами;

· принцип построения "что пишем, то и получаем", т. е., в состав компилятора не включен код, который мог бы проверить корректность работы программы в процессе ее выполнения;

· в транслятор не включена информация о стандартных функциях, отсутствуют операции, имеющие дело непосредственно с составными объектами;

· компактный синтаксис, потенциально приводящий к трудноуловимым ошибкам.

Алфавит языка Си

 

Константав Си может представлять собой число, символ или строку символов.

Целочисленные константы записываются, в зависимости от используемой системы счисления, в одной из следующих форм:

· десятичная: цифры от 0 до 9 со знаком "+", "-" или без знака. Примеры: 15, -305.

· восьмеричная: лидирующий 0, далее цифры от 0 до 7. Примеры: 0777, 0150.

· шестнадцатеричная: лидирующий 0, далее символ "x" или "X", затем цифры от 0 до 9 и/или символы A‑F или a‑f. Примеры: 0x10, 0XFF.

Целочисленные константы могут иметь тип данных int (целочисленный) или long (длинный целый).

Программист может явно определить для любой целочисленной константы тип long, дописав символ l или L в конец константы. Реализован также суффикс U или u, означающий, что константа имеет тип unsigned (беззнаковый). Можно использовать одновременно оба суффикса — L и U — для одной и той же константы: 15L, 1e6UL, 0xFFFFul.Константы с плавающей точкой имеют следующую общую форму записи:[+ или -][цифры].[цифры][E][+ или -][цифры]Здесь E признак экспоненциальной формы записи, задаваемый символом Е или е. Либо целая, либо дробная часть константы могут быть опущены, но не обе сразу. Либо десятичная точка с дробной частью, либо экспонента могут быть опущены, но не обе сразу. Примеры: -2.251e6, .45, 1.E‑03, 1e‑30.Символьная константа — это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы: 'c'. Значение символьной константы равно ASCII‑коду представляемого ею символа. Символ c может быть любым, за исключением апострофа ' (записывается как '\''), обратного слеша \ ('\\') и новой строки ('\n'). Примеры символьных констант приведены в табл. 2.1. Таблица 2.1 Примеры символьных констант
Константа Значение
'а' Малая латинская буква а
‘\007’ Символ с кодом 7 ("звонок")
‘\b’ Символ "забой" (BackSpace)
‘\х1В’ Символ ESC в коде ASCII

 

Символьные константы имеют тип charили int. Младший байт хранит код символа, а старший байт, если он есть, — знаковое расширение младшего байта.

Множество символов языка Си включает символы ASCII‑кода, при этом прописные и строчные буквы различаютсякомпилятором в любом контексте.

Разделителямиязыка являются символы пробела, табуляции, перевода строки, возврата каретки, новой страницы, вертикальной табуляциии комментариев (см. табл. 2.2).

Специальные символы предназначены для представления пробельных и неграфических знаков в символьных константах и строках. Специальный символ состоит из обратного слэша, за которым следует либо буква, либо знаки пунктуации, либо комбинация цифр. Специальные символы языка Си перечислены в табл.2.2.

 

Таблица 2.2. Специальные символы языка Си

Специальный символ 16‑ричная запись в коде ASCII Наименование
\n 0A Новая строка (перевод строки)
\t Горизонтальная табуляция
\v Вертикальная табуляция
\b Забой (backspace)
\r 0D Возврат каретки
\f 0C Новая страница
Звуковой сигнал
\’ Апостроф
\" Двойная кавычка
\\ 5C Обратный слеш
\ddd   Байтовое восьмеричное значение
\xdd   Байтовое шестнадцатеричное значение
Стандартные библиотечные функции ввода и вывода текстовой информации обычно рассматривают пару символов \r\n как один символ.Конструкция \ddd позволяет задать произвольное байтовое значение как последовательность от одной до трех восьмеричных цифр. Конструкция \xdd позволяет задать произвольное байтовое значение как последовательность от одной до двух шестнадцатеричных цифрНулевой код может быть записан как \0 или \х0.Символ <Ctrl>+<Z>(шестнадцатеричный код 1А) рассматривается как индикатор конца файла (символ EOF).

Комментарии компилятор Си также рассматривает как пробельные символы. Определены комментарии двух видов:

· /* многострочный */.Комментируется весь текст после комбинации символов /* до первой встретившейся комбинации */. Вложение многострочных комментариев опционально, т.е., зависит от настройки компилятора, поэтому не рекомендуется.· // однострочный. Комментируется текст после комбинации символов // до конца строки.

Символьная строка — это последовательность символов, заключенная в двойные кавычки. В Си строка рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Строка может содержать произвольное (в том числе нулевое) количество представимых символов. Вхождение в строку двойной кавычки ("), обратного слэша (\) или символа новой строки можно указать через специальные символы из табл 2.2. Примеры:

"Это символьная строка\n"

"Первый \\ Второй".

Для формирования символьных строк, занимающих несколько строк текста программы, используется комбинация символов "обратный слеш" и "новая строка":

printf ("\nHello,\

world");

Нулевой символ ('\0') автоматически добавляется в качестве последнего байта символьной строки и служит признаком ее конца. Таким образом, строка из N символов занимает N+1 байт памяти. В отличие от Паскаля, длина строки нигде не хранится. Каждая символьная строка в программе рассматривается как отдельный объект. Тип строки — массив элементов символьного типа данных char.

К идентификаторам относятся имена переменных, функций и меток в программе на Си.

Идентификатор Си — это последовательность из одной или более латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. Допускается любое число символов в идентификаторе, однако только первые 32 символа рассматриваются компилятором как значащие.

При использовании подчеркивания в качестве первого символа идентификатора необходимо соблюдать осторожность, поскольку такие идентификаторы могут совпасть (войти в конфликт) с именами "скрытых" библиотечных функций.

Компилятор языка Си не допускаетиспользования идентификаторов, совпадающих по написанию с ключевыми словами. Так, идентификатор do недопустим, однако Do или DO возможен.

Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора Си. Их использование строго регламентировано. При необходимости можно с помощью директивы препроцессора #define определить для ключевых слов другие имена. В общем случае директива #define располагается на отдельной строке и имеет вид

#define НовоеКлючевоеСлово ИдентификаторСи

Примеры:

#define boolean int

#define begin {

#define word unsigned int