我有一个数组short frame[4]
,我希望它作为函数参数short frame[2][2]
我该如何施放它?我尝试了不同的东西(比如*(short [2][2])&frame[0]*)
,但我仍然收到错误消息。
同样不起作用的是,如果我声明函数并使用whilevoid function(short frame[2][2])
调用函数是function(&frame[0])
frame
short frame[4];
无论如何,我认为这不是一个好习惯:
f((short (*)[2])a);
这在这里有效,尽管有警告。
#include <stdio.h>
void function(short frame[2][2])
{
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
printf("%d ", frame[i][j]);
printf("\n");
}
int main()
{
short frame[4] = { 0, 1, 2, 3 };
function(&frame[0]);
return 0;
}
你得到什么错误信息?
您不能在不同维度的数组之间进行转换。
它不知道你想要哪个方向。
您必须编写一个函数。
在伪代码中:
function castArray(short[4] input){
short[2][2] output = new short[2][2];
output[0][0] = input[0];
output[0][1] = input[1];
output[1][0] = input[2];
output[1][1] = input[3];
return output;
}
您可以像这样简单地实现它:
将一维数组转换为二维数组
short frame[MAX];
short dup_frame[ROW][COL];
int i,j,k;
for(i = 0 ; i < MAX ; i++)
{
j= i / ROW ; // you can do it by i / COL also
k= i % ROW ; // you can do it by i % COL also
dup_frame[j][k] = frame[i];
}