В каких случаях используется тип данных 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), если в процессе выполнения не произошло ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д