Mein Problem: Ich möchte eine Funktion erstellen, die zwei beliebige Elemente im Array von generischen Typ tauschen kann.C - generische Funktion: Tausche zwei Elemente im Array
Ich habe SwapG Funktion, die zwei Gegenstände aller Art austauschen können:
void SwapG(void * a, void * b, size_t size)
{
void * temp = malloc(size);
memcpy(temp, a, size);
memcpy(a, b, size);
memcpy(b, temp, size);
}
Hier ist mein Versuch der Funktion, die zwei Elemente in einem Array von jeder Art tauschen würde:
void SwapInArrayG(void ** arr, int a, int b, size_t size)
{
void * temp = malloc(size);
memcpy(temp, *(arr + a), size);
memcpy(*(arr + a), *(arr + b), size);
memcpy(*(arr + b), temp, size);
}
I bin mir ziemlich sicher, dass ich die Hinweise vermasselt habe, aber ich kann keine Lösung finden. Ich würde jede Hilfe schätzen :).
Hinweis: nachdem die Kopie fertig ist, gut zu 'frei (temp);' – chux
Was ist das Problem mit einem einfachen Makro? Ihr Code ist eine Einladung zu Programmierfehlern und wird sehr langsam Speicher für jeden Swap zuweisen/freigeben – Olaf
Wenn Sie zwei Einträge im selben Array tauschen möchten, warum verwenden Sie nicht die erste Funktion? 'SwapG (& array [idx1], & array [idx2], sizeof (entry))' – EOF