【发布时间】:2018-12-07 15:25:32
【问题描述】:
给定以下数组(例如):
int arr[6] = {1 , 2 , 3 , 4 , 5, 6};
如果我使用以下声明发送它:
int func(void* array, int n);
如何从func 发送到以下函数:
int f(void* element);
数组中某个元素的地址?
我试图做这样的事情:f(array + i);(为了发送&array[i]),但我收到以下错误:
算术中使用的“void *”类型指针
那么,我该怎么做呢?
【问题讨论】:
-
是
func仅使用int数组调用,还是func的array参数可以是不同的类型? -
func是否知道arr的类型?如果没有,那么你可能不走运。在这种情况下,您必须传递项目大小。 -
首先将其投射到
int*。f((int*)array + i) -
@DanielPryden 不,
array不仅仅是int数组。 -
@Lundin 所以我需要传递额外的参数
int size_来描述数组中任何元素的大小?