C中的方法签名,将指针传递给静态数组

时间:2011-11-20 16:18:46

标签: c pointers method-signature

我有以下数组:

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]’

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

char * ___[9]char *的数组,char * * ___[9]char * *的数组。他们不兼容。只需将您的功能签名更改为:

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

或者这个:

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

编辑添加(在Shahbaz的评论之后):按照以下方式调用您的函数:

int H = applyMask(mask, hSobelMask);

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

答案 2 :(得分:0)

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