How to void pointer to pass different types to function in C

1 Answer

0 votes
#include <stdio.h>

void calc(void* n, char type) {
    switch (type) {
        case 'i': {
            *((int*)n) *= 2;
            break;
        }
        case 'l': {
            *((long*)n) *= 2;
            break;
        }
        case 'f': {
            *((float*)n) *= 2;
            break;
        }
        case 'd': {
            *((double*)n) *= 2;
            break;
        }
    }
}

int main(void)
{
    int i = 30;
    long l = 529721;
    float f = 3.14f;
    double d = 8372.6029;

    calc(&i, 'i');
    calc(&l, 'l');
    calc(&f, 'f');
    calc(&d, 'd');

    printf("%d\n", i);
    printf("%ld\n", l);
    printf("%f\n", f);
    printf("%lf\n", d);

    return 0;
}





/*
run

60
1059442
6.280000
16745.205800

*/ 

 



answered May 12, 2023 by avibootz

Related questions

2 answers 125 views
125 views asked May 12, 2023 by avibootz
1 answer 139 views
139 views asked Jun 21, 2017 by avibootz
1 answer 167 views
167 views asked May 5, 2017 by avibootz
1 answer 97 views
...