Wie erstelle ich eine generische Funktion mit void * in c?

ich habe einincr Funktion zum Erhöhen des Wertes um1 Ich möchte es generisch machen, weil ich nicht verschiedene Funktionen für die gleiche Funktionalität machen möchte.

Angenommen, ich möchte inkrementierenint,float,char durch1

void incr(void *vp)
{
        (*vp)++;
}

Aber das Problem, das ich kenne, istDereferencing a void pointer is undefined behaviour. Manchmal kann es zu Fehlern kommen:Invalid use of void expression.

Meinemain Funktion ist:

int main()
{

int i=5;
float f=5.6f;
char c='a';

incr(&i);
incr(&f);
incr(&c);

return 0;
}

Das Problem ist, wie man das löst? Gibt es eine Möglichkeit, das Problem zu lösen?Cnur

oder

muss ich definierenincr() für jeden datentyp? wenn ja, wovon nützt das?void *

Gleiches Problem mit demswap() undsort() Ich möchte alle Arten von Datentypen mit derselben Funktion austauschen und sortieren.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage