Типы данных
1. Базовые (простые) типы
- Целые числа:
int
— целое число, минимальный размер 16 бит.short
— короткое целое число (обычно 16 бит).long
— длинное целое число (обычно 32 бита).long long
— очень длинное целое число (минимум 64 бита).
- Знаковые и беззнаковые числа:
signed
— знаковое значение (по умолчанию дляint
).unsigned
— беззнаковое значение.
- Числа с плавающей точкой:
float
— число с плавающей точкой одинарной точности (обычно 32 бита).double
— число с плавающей точкой двойной точности (обычно 64 бита).long double
— расширенная точность (размер зависит от реализации, часто 80 или 128 бит).
2. Тип char
- Хранит одиночный символ или маленькое целое число.
- Может быть:
signed char
— знаковый тип (диапазон -128 до 127).unsigned char
— беззнаковый тип (диапазон 0 до 255).
- Стандартный
char
может быть либо знаковым, либо беззнаковым (зависит от компилятора).
3. Логический тип
bool
(включается с помощью#include <stdbool.h>
) — логическое значение, принимаетtrue
илиfalse
.
4. Перечисления
enum
— перечисляемый тип данных:cenum Color { RED, GREEN, BLUE };
5. Массивы
- Набор элементов одного типа фиксированного размера:c
int arr[10];
6. Структуры
struct
— пользовательский тип для хранения различных типов данных:cstruct Point { int x; int y; };
7. Объединения
union
— хранит разные типы данных в одном и том же месте памяти:cunion Data { int i; float f; };
8. Указатели
- Указатели (
*
) используются для хранения адресов:cint *ptr;
9. Тип void
- Используется для обозначения отсутствия типа, например:
- Для функций, не возвращающих значение:c
void myFunction();
- Для указателей:c
void *ptr;
- Для функций, не возвращающих значение:
10. Типы для работы с фиксированными разрядностями (C99)
- Определены в
#include <stdint.h>
:int8_t
,uint8_t
— 8 бит.int16_t
,uint16_t
— 16 бит.int32_t
,uint32_t
— 32 бита.int64_t
,uint64_t
— 64 бита.
- Минимально допустимые размеры:
int_least8_t
,int_least16_t
и т.д.
11. Типы для работы с размером и индексами
size_t
— беззнаковый тип для размеров объектов.ptrdiff_t
— знаковый тип для разницы между указателями.
12. Комплексные числа (C99)
- Комплексные числа из
<complex.h>
:cdouble complex z = 1.0 + 2.0*I;
13. Битовые поля
- Части структуры для эффективного использования памяти:c
struct { unsigned int field : 4; };