我目前正在探索c中函数指针的方向,我模拟了一个我认为应该可以工作的小例子,但它反而产生了一个分段错误,我不太确定原因.
以下是我模拟的代码
void *new_testarr()
{
void *testarr = malloc(4*sizeof(int));
return testarr;
}
void *test_wrap(void *(*functionpointer)(void))
{
return (*functionpointer);
}
int main(int argc, char const *argv[])
{
int *arr = (int *) test_wrap(new_testarr);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
for (int i = 0; i < 4; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
我自己测试了函数new_testarr(),没有问题,但只要我试图包装它,就会发生分段错误.在将函数传递到TEST_WRAP()中时,我也try 添加一个与号,但也发生了同样的事情.
任何指导意见都将不胜感激.