Бернадинер Марк Абрамович
Очень краткий
неформальный
справочник по языку C
Я пишу на C с 1989 года.
Этот краткий правочник был составлен мною очень давно.
Надеюсь, что мой справочник поможет начинающим писателям на C.
Вопросы, замечания, предложения посылайте по E-mail mark@zlatoust.ru
Зарезервированные слова
Типы данных
основные определяемые пользователем
int enum
long struct
short union
unsigned typedef
char
float
double
Операторы управления Классы памяти
do auto
while extern
for static
if register
else
switch
case
default
break
continue
goto sizeof
return void
Типы данных и описания
Основные типы данных
Целые со знаком
int
long = long int ( >= int )
short = short int ( <= int )
Целые без знака
unsigned = unsigned int
unsigned long ( >= unsigned )
unsigned short ( <= unsigned )
Символы
char
Вещественные числа с плавающей точкой
float
double = long float ( >= float )
Типы данных определяемые пользователем
Массивы
одномерный имя_массива[размер]
двумерный имя_массива[размер][размер]
Структуры
struct имя_структуры { описание элемента структуры, ... };
Поля бит в структурах
struct имя_структуры {
описание элемента структуры : кол-во бит, ... };
Объединения
union имя_объединения { описание элемента объединения, ... };
Перечисления
enum имя_перечисления { список значений };
Переименование типов
typedef тип новый_тип;
Описание функции
тип имя_функции(); - возвращает значение
void имя_функции(); - не возвращает значение
Константы
Целые
Десятичные ( цифры 0-9, первая цифра не 0 )
Восьмеричные ( цифры 0-9, первая цифра 0 )
Шестнадцатиричные ( цифры 0-9, буквы a-f или A-F,
начинается с 0x или 0X )
Длинные целые буква l или L после константы
Константы с плавающей точкой состоит из
целой части,
десятичной точки,
дробной части,
буквы e или E,
показателя степени.
Символьная константа состоит из
одного символа заключенного в апострофы.
Любой символ можно записать как '\ddd',
где ddd-восьмеричное число или как 'xdd',
где dd-шестнадцатеричное число.
Символьная константа-данные типа int.
Некоторые спец. символы:
новая строка '\n'
горизонтальная табуляция '\t'
забой '\b'
возврат каретки '\r'
перевод формата '\f'
обратная косая черта '\\'
одиночная кавычка '\''
двойная кавычка '\"'
нуль '\0'
Строковая константа - последовательность символов,
заключенных в кавычки.
Строковая константа имеет тип char[].
Это массив символов, которые заключены в
кавычки к которым компилятор добавляет '\0'.
Управление ходом выполнения программы
Циклы
while(условие) оператор
for(инициализация,условие,коррекция) оператор
do оператор while(условие)
Цикл выполняутся до тех пор, пока условие не станет
ложным или нулем.
Выбор вариантов
Условный оператор if
if(условие) оператор
if(условие) оператор else оператор
Множественный выбор
switch(выражение)
{
case метка1: операторы
case метка2: операторы
...
default: операторы
}
Переходы
break - прервать цикл или оператор switch
continue - продолжить; начать новую итерацию
цикла, пропустив остаток тела цикла
goto метка - переход на метку
Возврат из подпрограммы
return
return выражение
Операции
Арифметические операции
+ - * / % ++ --
a%b - остаток от деления a на b (a и b - целые)
++ - увеличение на 1
-- - уменьшение на 1
Манипуляция разрядами
~ - поразрядное отрицание
& - поразрядное "И"
| - поразрядное "ИЛИ"
^ - поразрядное "ИСКЛЮЧАЮЩЕЕ ИЛИ"
<< - сдвиг влево
>> - сдвиг вправо
Операции присваивания
=
+= ( a+=b эквивалентно a=a+b )
-= ( a-=b эквивалентно a=a-b )
*= ( a*=b эквивалентно a=a*b )
/= ( a/=b эквивалентно a=a/b )
%= ( a%=b эквивалентно a=a%b )
&= ( a&=b эквивалентно a=a&b )
|= ( a|=b эквивалентно a=a|b )
^= ( a^=b эквивалентно a=a^b )
<<= ( a<<=b эквивалентно a=a<< b )
>>= ( a>>=b эквивалентно a=a>>b )
Логические операции
&& - логическое "И"
|| - логическое "ИЛИ"
! - логическое "НЕ"
Операции отношения
< <= > >= == !=
Операция над указателями
& - получить адрес переменной
* - коственная адресация; выдает значение
записанное по адресу на который ссылается
указатель
Операция над структурами и объединения
. - операция принадлежности
-> - косвенная адресация
Дополнительные операции
sizeof переменная - размер в байтах переменной
sizeof (тип) - размер в байтах переменной типа
выражение1 ? выражение2 : выражение3 - если выражение1
истинно, то выполняется выражение2,
если выражение1 ложно, то выполняется
выражение3
Порядок выполнения операций ( в порядке убывания приоритета )
() [] . ->
! ~ - ++ -- & * (тип) sizeof справа налево
* / %
+ -
>> <<
< <= > >=
== !=
&
^
|
&&
||
? : справа налево
= *= /= %= += -= <<= >>= &= ^= |= справа налево
,
Препроцессор
Директива препроцессора(макропроцессора) начинается с
символа #. Строка может содержать только одну команду
препроцессора. Если строка оканчивается символом \,
то директива препроцессора продолжается на следующей
строке.
Замена идентификаторов
#define идентификатор строка - идентификатор заменяется
на строку
#undef идентификатор - сделать идентификатор неопределенным
Макросы
#define идент1(идент2,..) строка - идентификаторы в строке
заменяются на фактические
параметры
Включение файлов
#include <файл> - найти файл в стандартном каталоге
#include "файл" - найти файл сначала в текущем а потом
в стандартном каталоге
Условная компиляция
#if константное_выражение
#ifdef идентификатор
#ifndef идентификатор
#else
#endif
#elif
#ifndef
Номер строки и имя файла
#line целая_константа "имя_файла" - заставляет препроцессор
изменить номер текущей
строки и имя файла.
Имя файла можно не
указывать.
Макропеременные
__FILE__ - текущее имя файла в кавычках
__LINE__ - номер текущей строки
__DATE__
__TIME__
int main(argc,argv,arge)
int argc;
char *argv[]; /* или char **argv */
char *arge[]; /* или char **arge */
Системные функции
Файловая система
access - определить доступность файла
chdir - изменить текущий каталог
chmod - управление доступом к файлу
close - закрыть файл
creat - создать файл
dup,dup2 - сдублировать дескриптор открытого файла
ioctl - управление устройством
link - создать ссылку на файл
lseek - передвинуть указатель чтения/записи
open - открыть файл
pipe - создать канал
read - чтение из файла
stat,fstat- получить информацию о файле
umask - установить маску прав доступа к файлу
unlink - исключить элемент из оглавления
ulimit - ограничить размер файла
write - писать в файл
Управление процессами
alarm - установить будильник
brk,sbrk - изменить размер памяти процесса
exec* - выполнить файл
exit - завершить процесс
fork - создать процесс
kill - послать сигнал процессу
nice - изменит приоритет
pause - приостановит выполнение до получения сигнала
profil - профилирование во время выполнения
signal - перехватить или игнорировать прерывание
times - получить время выполнения процесса
wait - ждать завершения порожденного процесса
setpgrp - установить идентификатор группы процессов
Защита
getuid - реальный идентификатор пользователя
geteuid - действующий идентификатор пользователя
getgid - реальный идентификатор группы
geteuid - действующий идентификатор группы
setuid - установка реального и действующего идентификатора
пользователя
setgid - установка реального и действующего идентификатора
группы
Прочие
time - получить системное время
Переменные
errno - код ответа системных функций
( не изменяется, если нет ошибки )
|