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 |
устанавливает начальное значение генератора псевдослучайных чисел | Да | Да |
| Выделение и освобождение памяти | |||
malloccallocrealloc |
выделяет память из кучи | Да | Да |
free |
освобождает память обратно в кучу | Да | Да |
| Контроль процесса выполнения программы | |||
abort |
некорректное завершение выполнения | Да | Да |
atexit |
регистрирует обратный вызов функции, которую нужно будет выполнить перед завершением работы программы | Да | Да |
exit |
завершает выполнение программы | Да | Да |
getenv |
извлекает переменные окружения | Да | Да |
system |
выполняет внешнюю команду | Да | Да |
| Сортировка и поиск | |||
bsearch |
двоичный поиск в массиве | Да | Да |
qsort |
сортировка массива | Да | Да |
| Математика | |||
abs, labs |
абсолютная величина целого числа | Да | Да |
llabs, imaxabs |
Нет | Да | |
divldiv |
деление целых чисел | Да | Да |
| Многобайтовые операции/ широкие символы | |||
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 (рус.)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.