У меня есть функция incr
, чтобы увеличить значение на 1
Я хочу сделать его общим, потому что я не хочу создавать разные функции для одной и той же функциональности.
Предположим, что я хочу увеличивать int
, float
, char
на 1
void incr(void *vp)
{
(*vp)++;
}
Но проблема, которую я знаю, Dereferencing a void pointer is undefined behaviour
. Иногда это может привести к ошибке: Invalid use of void expression
.
My main
funciton:
int main()
{
int i=5;
float f=5.6f;
char c='a';
incr(&i);
incr(&f);
incr(&c);
return 0;
}
Проблема в том, как это решить? Есть ли способ решить его только в C
или
мне нужно определить incr()
для каждого типа данных? если да, то какое использование void *
Такая же проблема с swap()
и sort()
. Я хочу поменять местами и отсортировать все типы данных с одинаковой функцией.