希望有人能够解释一下以下行为:
假设我声明了一个静态的 2D 数组
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
是动态分配的,这种方法是否可行?