union или объединения использую для сокращения занимаемой памяти данными. Типы данных, перечисленные в объединении используют одну и ту же область памяти - размером с наибольший тип.
#include <stdio.h>
#include <stdbool.h> // bool
union un_val{ // Перечисление для хранения аргументов и результатов
bool bval; // bool
int ival; // int
double dval; // double
};
void my_func(union un_val *res){
res->ival = 10;
}
int main(){
union un_val a;
a.ival = 0;
my_func(&a);
printf("%d \n", a.ival);
return 0;
}