В каких случаях используется тип данных void - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В каких случаях используется этот тип данных при объявлении переменных? В функциях понятно, когда нечего возвращать. А как он может быть полезен в переменных? ума не приложу. Объясните если можно с примером.

Решение задачи: «В каких случаях используется тип данных void»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <errno.h>
  3.  
  4. void
  5. catch_error(int local_errno)
  6. {
  7.     return;
  8. }
  9.  
  10. void *
  11. raise_get_mem(unsigned size)
  12. {
  13.     void * tmp_variable;
  14.    
  15.     if((tmp_variable = malloc(size)) == NULL) {
  16.         int tmp_errno = errno;
  17.         catch_error(errno);
  18.         errno = tmp_errno;
  19.         return NULL;
  20.     }
  21.     return tmp_variable;
  22. }
  23.  
  24. int
  25. main(int argc, char ** argv)
  26. {
  27.     int * int_ptr;
  28.     double * dbl_ptr;
  29.    
  30.     int_ptr = raise_get_mem(sizeof(int) * 10);
  31.     dbl_ptr = raise_get_mem(sizeof(double) * 10);
  32.    
  33.     free(int_ptr);
  34.     free(dbl_ptr);
  35.    
  36.     exit(EXIT_SUCCESS);
  37. }

Объяснение кода листинга программы

  1. В данном коде используется тип данных void, который применяется для функций, не возвращающих значение.
  2. Функция catch_error не возвращает значение, она предназначена для обработки ошибок и не используется в данном коде.
  3. Функция raise_get_mem предназначена для выделения памяти с помощью malloc и возврата указателя на выделенную память.
  4. Если malloc вернул NULL (что означает ошибку при выделении памяти), то в функции raise_get_mem сохраняется значение errno, вызывается функция catch_error для обработки ошибки, затем значение errno восстанавливается, и функция возвращает NULL.
  5. Если malloc успешно выделил память, то в функции raise_get_mem возвращается указатель на выделенную память.
  6. В функции main создаются два указателя int_ptr и dbl_ptr на выделение памяти с помощью функции raise_get_mem.
  7. Затем освобождается выделенная память с помощью функции free для обоих указателей.
  8. Функция main завершается с успехом (EXIT_SUCCESS), если в процессе выполнения не произошло ошибок.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы