2

我有以下数组:

char* mask[9];
int hSobelMask[9] = {
    -1, -2, -1,
    0, 0, 0,
    1, 2, 1};

我想在这个数组上提供一个指向这样的方法的指针:

int H = applyMask(&mask, &hSobelMask);

applyMask 函数的签名如下:

int applyMask(char** mask[9], int* sobelMask[9]);

但我收到以下编译警告:

demo.c: In function ‘customSobel’:
demo.c:232:7: warning: passing argument 1 of ‘applyMask’ from incompatible pointer type
demo.c:181:5: note: expected ‘char ***’ but argument is of type ‘char * (*)[9]’
demo.c:232:7: warning: passing argument 2 of ‘applyMask’ from incompatible pointer type
demo.c:181:5: note: expected ‘int **’ but argument is of type ‘int (*)[9]’

这个警告是什么意思,我该如何摆脱它?

4

3 回答 3

5

您想将指针传递给这些数组吗?所以你可能正在寻找这个:

int applyMask(char* (*mask)[9], int (*sobelMask)[9]);
于 2011-11-20T16:27:42.220 回答
0

Achar * ___[9]是 的数组char *,achar * * ___[9]是 的数组char * *。它们不兼容。只需将您的函数签名更改为:

int applyMask(char** mask, int* sobelMask)

或这个:

int applyMask(char* mask[], int sobelMask[])

编辑添加(在Shahbaz下面的评论之后):像这样调用你的函数:

int H = applyMask(mask, hSobelMask);

不需要这些&s,因为数组变量已经是指向数组内容的指针。

于 2011-11-20T16:23:08.290 回答
0
int applyMask(char** mask, int* sobelMask);
于 2011-11-20T16:23:44.043 回答