Русская Википедия:Stdlib.h

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Стандартная библиотека СиШаблон:Заголовок со строчной буквы stdlib.h — заголовочный файл стандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib. Название «stdlib» расшифровывается как «standard library» (стандартная библиотека).

Функции

Имя Описание Соответствие стандартам
Преобразование типов C89 C99
atof строка в число двойной точности (double; НЕ float)
Да
Да
Да
Да
atoi строка в целое число (integer)
Да
Да
Да
Да
atol строка в длинное целое число (long integer)
Да
Да
Да
Да
atoll строка в длинное целое число (long long integer)
Нет
Нет
Да
Да
strtod строка в число двойной точности (double)
Да
Да
Да
Да
strtof строка в число одиночной точности (float)
Нет
Нет
Да
Да
strtol строка в длинное целое число (long integer)
Да
Да
Да
Да
strtold строка в длинное двойной точности (long double)
Нет
Нет
Да
Да
strtoll строка в длинное целое число (long long integer)
Нет
Нет
Да
Да
strtoul строка в беззнаковое длинное целое число (unsigned long integer)
Да
Да
Да
Да
strtoull строка в беззнаковое длинное целое число (unsigned long long integer)
Нет
Нет
Да
Да
Генерация псевдослучайных последовательностей
rand генерирует псевдослучайное значение
Да
Да
Да
Да
srand устанавливает начальное значение генератора псевдослучайных чисел
Да
Да
Да
Да
Выделение и освобождение памяти
malloc
calloc
realloc
выделяет память из кучи
Да
Да
Да
Да
free освобождает память обратно в кучу
Да
Да
Да
Да
Контроль процесса выполнения программы
abort некорректное завершение выполнения
Да
Да
Да
Да
atexit регистрирует обратный вызов функции, которую нужно будет выполнить перед завершением работы программы
Да
Да
Да
Да
exit завершает выполнение программы
Да
Да
Да
Да
getenv извлекает переменные окружения
Да
Да
Да
Да
system выполняет внешнюю команду
Да
Да
Да
Да
Сортировка и поиск
bsearch двоичный поиск в массиве
Да
Да
Да
Да
qsort сортировка массива
Да
Да
Да
Да
Математика
abs, labs абсолютная величина целого числа
Да
Да
Да
Да
llabs, imaxabs
Нет
Нет
Да
Да
div
ldiv
деление целых чисел
Да
Да
Да
Да
Многобайтовые операции/ широкие символы
mblen размер многобайтовых символов[1]
Нет
Нет
Да
Да
mbtowc, wctomb, mbstowcs, wcstombs преобразование многобайтовых и широких символов[1]
Нет
Нет
Да
Да

NULL

Заголовочные файлы stdlib.h и stddef.h определяют макрос NULL, являющийся константным нуль-указателем, который гарантированно указывает на некорректный адрес памяти.

Варианты

NULL может быть определен как константное выражение, равное целому нулевому числу (нулю), длинному целому нулю, или нуль приводится к указателю типа void *:

#define NULL  0
#define NULL  0L
#define NULL  ((void *) 0)

Несмотря на то, что константа нуль-указателя всегда представляется в Си символьной константой 0 или 0, приведённым к void-указателю, реальное битовое представление подобного указателя зависит от системы и может содержать однобитовые значения.

Типы

size_t

Заголовочные файлы stdlib.h и stddef.h определяют тип данных, называемый size_t[2], который используется для представления размера объекта. Библиотечные функции, использующие размеры, принимают на вход значения именно этого типа. Значения типа size_t возвращает оператор sizeof.

Настоящий тип size_t платформо-независим; распространенной ошибкой является подразумевать под size_t беззнаковое целое (unsigned int), что может привести к ошибкам программирования,[3] причём в первую очередь это касается 64-битных архитектур.

div_t, ldiv_t

Также определены два менее широко используемых типа данных — div_t и ldiv_t. Они являются возвращаемыми типами функций div и ldiv. Стандарт определяет их следующим образом:

typedef struct {
    int quot, rem;
} div_t;
typedef struct {
    long int quot, rem;
} ldiv_t;

Нестандартные функции

itoa

itoa — общая функция, входящая во множество реализаций stdlib.h, но не определяемая стандартом. Возможно, её так часто включают в библиотеки благодаря её описанию в книге «Язык программирования Си». Аналогичного эффекта можно добиться при помощи функции sprintf, которая определена в стандарте.

См. также

Примечания

Шаблон:Примечания

Ссылки

  1. 1,0 1,1 C++ Resources Network — stdlib.h Шаблон:Wayback проверено 2009 12 15
  2. Согласно стандарту ISO/IEC 9899 C99, Глава 7.20 General utilities <stdlib.h> (point number 2) и Приложение B.19 General utilities <stdlib.h>. Определение может также содержаться в stddef.h, если кто-то захочет избежать подключения всей stdlib.
  3. 20 issues of porting C++ code on the 64-bit platform Шаблон:Webarchive