可能重複:
How Pointer of Multi-Dimension Arrays Work in C勘定INT ***爲int [] [] []
我需要一個int***
指向一個int[][][]
的值,但是當我循環遍歷行,列和層,並將ptr[r][c][l]
指定爲val[r][c][l]
,我得到了分段錯誤。
有人可以告訴我如何分配int***
到int[][][]
?
這裏是我的代碼:
int row=2;
int col=3;
int layer=4;
int arr[2][3][4] = {{{1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} } };
char _mode = 'h';
int*** ptr ;
for (int r=0;r<row;r++)
{
for (int c=0;c<col;c++)
{
for (int l=0;l<layer;l++)
{
ptr[row][col][layer] = arr[row][col][layer];
}
}
}
cout <<findExtreme(ptr, row, col, layer, _mode)<<endl;
這裏是被稱爲
int findExtreme(int*** arr,int row,int col,int layer, char _mode)
{
int val = 0;
for (int r=0;r<row;r++)
{
for (int c=0;c<col;c++)
{
for (int l=0;l<layer;l++)
{
if (_mode == 'h')
if (arr[r][c][l] > val)
val = arr[r][c][l];
if (_mode == 'l')
if (arr[r][c][l] < val)
val = arr[r][c][l];
}
}
}
return val;
}
如果您發佈了您擁有的代碼,將會更容易讓某人發現問題。 – hmjd 2012-08-02 08:18:02
你的'int [] [] []'是否有合適的大小? – 2012-08-02 08:18:11
你能告訴我們代碼嗎? – shengy 2012-08-02 08:19:13