В каких случаях используется тип данных void - C (СИ)
Формулировка задачи:
В каких случаях используется этот тип данных при объявлении переменных?
В функциях понятно, когда нечего возвращать. А как он может быть полезен в переменных? ума не приложу. Объясните если можно с примером.
Решение задачи: «В каких случаях используется тип данных void»
textual
Листинг программы
- #include <stdlib.h>
- #include <errno.h>
- void
- catch_error(int local_errno)
- {
- return;
- }
- void *
- raise_get_mem(unsigned size)
- {
- void * tmp_variable;
- if((tmp_variable = malloc(size)) == NULL) {
- int tmp_errno = errno;
- catch_error(errno);
- errno = tmp_errno;
- return NULL;
- }
- return tmp_variable;
- }
- int
- main(int argc, char ** argv)
- {
- int * int_ptr;
- double * dbl_ptr;
- int_ptr = raise_get_mem(sizeof(int) * 10);
- dbl_ptr = raise_get_mem(sizeof(double) * 10);
- free(int_ptr);
- free(dbl_ptr);
- exit(EXIT_SUCCESS);
- }
Объяснение кода листинга программы
- В данном коде используется тип данных void, который применяется для функций, не возвращающих значение.
- Функция catch_error не возвращает значение, она предназначена для обработки ошибок и не используется в данном коде.
- Функция raise_get_mem предназначена для выделения памяти с помощью malloc и возврата указателя на выделенную память.
- Если malloc вернул NULL (что означает ошибку при выделении памяти), то в функции raise_get_mem сохраняется значение errno, вызывается функция catch_error для обработки ошибки, затем значение errno восстанавливается, и функция возвращает NULL.
- Если malloc успешно выделил память, то в функции raise_get_mem возвращается указатель на выделенную память.
- В функции main создаются два указателя int_ptr и dbl_ptr на выделение памяти с помощью функции raise_get_mem.
- Затем освобождается выделенная память с помощью функции free для обоих указателей.
- Функция main завершается с успехом (EXIT_SUCCESS), если в процессе выполнения не произошло ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д