Тип void
является неполным типом. Таким образом, вы не можете разыменовывать указатель типа void *
.
. Напишите функцию наподобие
void function(void *array, size_t size) {
/*in this example the array's members are 2
and i want to swap them*/
void *help = malloc(size);
memcpy(help, array, size);
memcpy( array, ( char * )array + size, size);
memcpy( ( char * )array + size, help, size);
free(help);
}
Вот демонстрационная программа.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void function(void *array, size_t size) {
/*in this example the array's members are 2
and i want to swap them*/
void *help = malloc(size);
memcpy(help, array, size);
memcpy( array, ( char * )array + size, size);
memcpy( ( char * )array + size, help, size);
free(help);
}
int main(void)
{
int a[] = { 1, 2 };
const size_t N = sizeof( a ) / sizeof( *a );
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
putchar( '\n' );
function( a, sizeof( int ) );
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
putchar( '\n' );
return 0;
}
Ее вывод
1012 *