3

我有一个数组short frame[4],我希望它作为函数参数short frame[2][2]

我该如何施放它?我尝试了不同的东西(比如*(short [2][2])&frame[0]*),但我仍然收到错误消息。

同样不起作用的是,如果我声明函数并使用whilevoid function(short frame[2][2]) 调用函数是function(&frame[0])frameshort frame[4];

4

4 回答 4

2

无论如何,我认为这不是一个好习惯:

f((short (*)[2])a);
于 2012-11-28T12:38:26.657 回答
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;
}

你得到什么错误信息?

于 2012-11-28T12:38:20.823 回答
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;
}
于 2012-11-28T12:38:21.387 回答
0

您可以像这样简单地实现它:

将一维数组转换为二维数组

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];
}
于 2012-11-28T12:38:57.627 回答