Функция func
принимает параметр void buf
. Я хочу вставить значения от 1 до 10 в buf
, позвонив по номеру func
. Однако адреса buf
отличаются от func
и main
, а печатные значения не от 1 до 10. Может ли кто-нибудь помочь мне с этой проблемой? Благодаря!c функция с параметром void
void func(int n, void *buf);
int main()
{
void *buf;
func(10,buf);
for(int i=0;i<10;i++){
printf("%d\n", ((char*)buf)[i]);
}
printf("in main, after func: %p\n",buf);
}
void func(int n, void *buf)
{
(char*)buf;
char my_array[n];
for(int i=0;i<n;i++){
my_array[i]=i;
}
buf = my_array;
printf("in func: %p\n",buf);
}
«Функция func принимает значение void parameter buf» - нет, это не так! 'buf' - это' void * ', а не' void' (что бы это ни было). И ваша подпись 'main' должна быть' int main (void) '. И почему вы не помогаете своему компилятору? Никогда не используйте 'void *', если это действительно не нужно. То же самое для бросков. Введите безопасный код, все остальное - кошмар для обслуживания. – Olaf