我将不胜感激,如果有人可以给我解释以下行为:C中的二维数组如何变成一维数组?
说我声明静态二维数组
float buffer[NX][NY];
现在,如果我要填充这个数组,我有通知,这可能是这样做的方法:
initarray(buffer, NX, NY);
#define INITDATAVAL 0.5
void initarray(void *ptr, int nx, int ny)
{
int i, j;
float *data = (float *) ptr;
for (i=0; i < nx*ny; i++)
{
data[i] = INITDATAVAL;
}
}
我的问题是,如果缓冲区是一个二维数组,怎么能一旦传递给initarray
功能作为一维数组?我很难理解它......
当二维数组被静态分配时,分配的内存是连续的,但是如果buffer
是动态分配的,则可以使用这种方法吗?
+1用于保留模板信息。我甚至不知道这一点。 – evotopid 2012-02-02 16:22:01