Как передать значение массива указателей пустоты в другую функцию?c печать строки указателя void
Значение параметров функции является
- недействительным указатель на массив элементов
- размер элемента массива, е. г.
sizeof(int)
- количество элементов массива размером
Как printf
void
указатель массива?
void sorting(void* p, int sz, int n, int (*pf)(void*, void*))
{
int i, j;
for (i = 0; i < n - 1; ++i)
for (j = i + 1; j < n; ++j)
if (pf(/*?*/, /*?*/) > 0)
/*swap function*/
}
int cmp_int(void* p1, void* p2)
{
if (*(int*)p1 < *(int*)p2) return -1;
if (*(int*)p1 > *(int*)p2) return +1;
return 0;
}
int cmp_dbl(void* p1, void* p2)
{
if (*(double*)p1 < *(double*)p2) return -1;
if (*(double*)p1 > *(double*)p2) return +1;
return 0;
}
int main(void)
{
int a[] = { 4, 3, 2, 6, 5, 1, 7, 8 };
int an = sizeof(a)/sizeof(*a);
double b[] = { 4.4, 6.6, 2.2, 3.3, 8.8, 1.0, 0.0 };
int bn = sizeof(b)/sizeof(*b);
int i;
sorting(b, sizeof(double), bn, cmp_double);
sorting(b, sizeof(int), an, cmp_int);
}
Как передать значение массива для pf()
функции в sorting()
?
Легкий способ (int *)p[j]
, но я хочу использовать два типа значения (double
, int
)
@iharob hmm ... я думаю * (void *) (p + sz * i), как это будет работать, сделать 2 функции только способом? – user2637015
@barakmanos это ошибка – user2637015
http://stackoverflow.com/a/27269430/971127 – BLUEPIXY