我有一个数组short frame[4]
,我希望它作为函数参数short frame[2][2]
我该如何施展它?我尝试了不同的东西(比如*(short [2][2])&frame[0]*)
,但我仍然收到错误消息。
如果我用void function(short frame[2][2])
声明该函数,也无效
并使用function(&frame[0])
调用该函数,frame
为short frame[4];
答案 0 :(得分:2)
无论如何,我认为这不是一个好习惯:
f((short (*)[2])a);
答案 1 :(得分:1)
这可以在这里工作,虽然有警告。
#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;
}
您收到了什么错误消息?
答案 2 :(得分: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;
}
答案 3 :(得分:0)
你可以通过以下方式轻松实现:
将1-D阵列转换为2-D阵列
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];
}