我正在尝试将数组作为指向函数的指针,因为我想从中返回一个数组。调用函数时出现问题。我有以下代码:
void function(unsigned char p[4][4], unsigned char x, unsigned char* arr[4]) {
unsigned char result;
for (int ii=0;ii<4;ii++)
{
result= p[ii][1] - p[ii][2] + p[ii][0]*x + p[ii][3]*4;
*arr[ii]=result;
}
unsigned char function2(unsigned char p[4][4], unsigned char x, unsigned char y) {
unsigned char arr[4];
function(p, y, arr);
ret= function3(arr, x);
return ret;
}
目标是修改arr
中向量function
的值,以便在function3
中使用它,与function
无关。编译器说:
对于参数'3',无法将'unsigned char *'转换为'unsigned char **' 'void function(unsigned char(*)[4],unsigned char,unsigned 字符**)
感谢任何帮助!
答案 0 :(得分:0)
我认为你可以简单地将数组作为指针传递(没有指向数组的指针):
void function(unsigned char p[4][4], unsigned char x, unsigned char * arr) {
unsigned char result;
for (int ii = 0; ii < 4; ii++)
{
result = p[ii][1] - p[ii][2] + p[ii][0] * x + p[ii][3] * 4;
arr[ii] = result;
}
}
我认为这是最简单的方法。