Я пытаюсь передать функцию в качестве аргумента другой функции с void
указателем и он не работаетКак напечатать пустоту * в функции и как получить доступ к переменной void * в функции?
#include "header.h"
void print (void *Arg)
{
// while ((int *) Arg[0])
{
printf ("Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int *) Arg[1]);
sleep (1);
//Arg[0]--;
//Arg[1]--;
}
}
void main(int argc, char **argv)
{
int count[2] = { 10, 160};
print (count);
}
Я получаю ошибки как это:
void*.c: In function ‘print’:
void*.c:6:52: warning: dereferencing ‘void *’ pointer [enabled by default]
printf ("Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int *) Arg[1]);
^
void*.c:6:3: error: invalid use of void expression
printf ("Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int *) Arg[1]);
^
void*.c:6:69: warning: dereferencing ‘void *’ pointer [enabled by default]
printf ("Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int *) Arg[1]);
^
void*.c:6:3: error: invalid use of void expression
printf ("Arg[0] = %d Arg[1] = %d\n",(int *) Arg[0], (int *) Arg[1]);
Как исправить проблема?
Вы не можете использовать указатель 'void *' для доступа к массиву, так как он неизвестен, какой размер каждого элемента. –
'void main()' -> 'int main()' –
Так как функция 'print' будет работать только при передаче указателя на' int', я не знаю, почему вы затрудняете жизнь, бросая в 'void *'. –