如何将两个数组传递给一个参数中的函数?

Bum*_*imp 2 c callback

我有这个代码:

unsigned short (*pixel_array)[SCREEN_HEIGHT] = get_ok_zone(mouse_mask); 
unsigned short (*pixel_border)[2] = get_ok_zone_border(pixel_array); 
Run Code Online (Sandbox Code Playgroud)

这让我可以访问这两个数据数组.

我需要以某种方式将这两个数组作为ONE参数传递给函数.

我不仅无法弄清楚如何传递它们,我无法弄清楚一旦我将它们放入函数中就能单独访问它们.

我一整天都在努力理解这一点,它似乎正在逃避我.

有人可以向我解释我需要做什么才能通过一个参数(可能在一个指针数组中)将这两个数组传递给一个函数,以及如何在函数内部访问它们?

编辑:我将参数(我唯一允许传递的参数)传递给Quartz Event Tap回调.

编辑2: @Kevin

我创建了结构:

struct array_stack {
    unsigned short (*pixel_array)[SCREEN_HEIGHT]; 
    unsigned short (*pixel_border)[2]; 
};
Run Code Online (Sandbox Code Playgroud)

然后,在我的int main()中,我有:

struct array_stack as = {get_ok_zone(mouse_mask), get_ok_zone_border(get_ok_zone(mouse_mask))};



CFRunLoopSourceRef runLoopSource;
CGEventMask event_mask;
event_mask = CGEventMaskBit(kCGEventMouseMoved) | CGEventMaskBit(kCGEventLeftMouseDragged) | CGEventMaskBit(kCGEventRightMouseDragged) | CGEventMaskBit(kCGEventOtherMouseDragged);

CGSetLocalEventsSuppressionInterval(0);

CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, 0, event_mask, mouse_filter, as);
Run Code Online (Sandbox Code Playgroud)

(我传递了代码块底部的as最后一个参数CGEventTapCreate());

我收到错误passing struct array_stack to a parameter of incompatible type 'void',错误指向我:

CG_EXTERN CFMachPortRef CGEventTapCreate(CGEventTapLocation tap,
CGEventTapPlacement place, CGEventTapOptions options,
CGEventMask eventsOfInterest, CGEventTapCallBack callback,
void *userInfo) CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA);
Run Code Online (Sandbox Code Playgroud)

void *userInfo 是接收我的参数的参数,最终会传递给回调函数.

Kev*_*vin 7

将它们包裹在struct:

struct wrapper {
    unsigned short (*arr)[SCREEN_HEIGHT];
    unsigned short (*border)[2];
}
Run Code Online (Sandbox Code Playgroud)

这是一个常见的技巧,特别是对于回调.您可以使用它void *通过将指针传递给存储了所有内容的结构来传递任何内容.