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 2 C++ Resources Network — stdlib.h Архивная копия от 7 января 2010 на Wayback Machine проверено 2009 12 15
- ↑ Согласно стандарту ISO/IEC 9899 C99, Глава 7.20 General utilities <stdlib.h> (point number 2) и Приложение B.19 General utilities <stdlib.h>. Определение может также содержаться в stddef.h, если кто-то захочет избежать подключения всей stdlib.
- ↑ 20 issues of porting C++ code on the 64-bit platform Архивировано 4 января 2010 года.
Ссылки
[править | править код]- Список функций stdlib.h на сайте cplusplus.com (англ.)
- Why size_t matters (недоступная ссылка) (англ.)
- Стандартные Вспомогательные Функции (stdlib.h) (рус.)
- Функции библиотеки stdlib.h (рус.)