mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

Бернадинер Марк Абрамович
Очень краткий
неформальный

справочник по языку 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     -  код ответа системных функций
		( не изменяется, если нет ошибки )



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк