Алфавит языка Си
ОГЛАВЛЕНИЕ
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 | 0В | Вертикальная табуляция |
\b | Забой (backspace) | |
\r | 0D | Возврат каретки |
\f | 0C | Новая страница |
\а | Звуковой сигнал | |
\’ | 2С | Апостроф |
\" | Двойная кавычка | |
\\ | 5C | Обратный слеш |
\ddd | Байтовое восьмеричное значение | |
\xdd | Байтовое шестнадцатеричное значение |
Комментарии компилятор Си также рассматривает как пробельные символы. Определены комментарии двух видов:
· /* многострочный */.Комментируется весь текст после комбинации символов /* до первой встретившейся комбинации */. Вложение многострочных комментариев опционально, т.е., зависит от настройки компилятора, поэтому не рекомендуется.· // однострочный. Комментируется текст после комбинации символов // до конца строки.Символьная строка — это последовательность символов, заключенная в двойные кавычки. В Си строка рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Строка может содержать произвольное (в том числе нулевое) количество представимых символов. Вхождение в строку двойной кавычки ("), обратного слэша (\) или символа новой строки можно указать через специальные символы из табл 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