我试图声明一个指向二维浮点矩阵的指针,以便获得我的图像数据的动态行为,但是Im有一个编译错误C2057:预期的常量表达式。我认为一个指针必须以这种方式铸造,但显然不是。请任何人都可以帮助我?谢谢!!如何声明一个指向2d浮点矩阵的指针?
//Image size input
int imheight;
int imwidth;
cout << "Please, enter image height: \n>";
scanf ("%d",&imheight);
cout << "Please, enter image width: \n>";
scanf ("%d",&imheight);
const int imheight2 = imheight;
const int imwidth2 = imwidth;
float *zArray[imheight2][imwidth2];
这是我的其他功能之一,我试图hace访问zArray。我不是获取数据正确读出:
void LoadRIS(char* inputFileName , float** zArray, int imageHeight , int imageWidth){
// Load input RIS file
FILE* lRis = fopen (inputFileName, "rb");
// Jump to data position
for (int i = 0; i < 88; i++){
uchar a = getc (lRis);
}
// Read z array
size_t counter = fread (*zArray , 1 , imageHeight * imageWidth * sizeof(zArray) , lRis);
//Get max value of RIS
float RISmax = zArray [0][0];
float RISmin = zArray [0][0];
for (int i=0; i<imageHeight; i++)
{
for (int j=0; j<imageWidth; j++)
{
if (zArray[i][j] > RISmax)
RISmax = zArray [i][j];
if (zArray[i][j] < RISmin)
RISmin = zArray [i][j];
}
}
std::cout<<"The max value of the RIS file is: "<<RISmax<<"\n";
std::cout<<"The min value of the RIS file is: "<<RISmin<<"\n";
Beep(0,5000);
// Close input file
fclose (lRis);
}
除了回答说些什么,该类型是指针的二维数组,而不是一个指向二维数组的指针。你会想'float(* zArray)[imheight2] [imwidth2];'。 – 2013-05-06 10:11:24
这个问题被标记为C和C++,但答案是不同的。 C支持可变长度数组已经有一段时间了,所以小的可变长度数组可以并且应该用'float foo [r] [c];'定义。其中一个标签应该被删除。 – 2013-05-06 11:43:37