我試圖在傳遞二維數組之後從函數返回二維數組。這是我得到了多少,但我仍然遇到過多的編譯錯誤。我試着搜索錯誤的意思,但我仍然非常困惑。我試圖旋轉90度的值的數組。這裏是我的代碼:錯誤:下標值既不是數組也不是指針也不是矢量
// Rotate Array 90 degrees
char * Rotate90Array(char *array, int rowCount, int columnCount) {
// These have to be swapped because the image is being rotated
char *returnArray[columnCount][rowCount];
int u = rowCount - 1;
int v = columnCount - 1;
int i = 0;
int j = 0;
for (i = 0; i < rowCount; i++) {
for (j = 0; j < columnCount; j++) {
returnArray[i][j] = array[u-j][i];
j++;
}
i++;
}
return returnArray;
}
以下是有關這個功能我的錯誤:
P-MFunctionHolder.c: In function 'Rotate90Array':
P-MFunctionHolder.c:211:34: error: subscripted value is neither array nor pointer nor vector
P-MFunctionHolder.c:216:2: warning: return from incompatible pointer type [enabled by default]
P-MFunctionHolder.c:216:2: warning: function returns address of local variable [enabled by default]
我也有在前面的一個調用兩次另一個函數,旋轉陣列180度,而這給我類似的錯誤。下面是代碼:
// Rotate Array 180 degrees
char * Rotate180Array(char *array, int rowCount, int columnCount) {
char returnArray1[rowCount][columnCount] = Rotate90Array(array, rowCount, columnCount);
char returnArray2[rowCount][columnCount] = Rotate90Array(returnArray1, rowCount, columnCount);
return returnArray2;
}
下面是有關該功能的錯誤:
P-MFunctionHolder.c: In function 'Rotate180Array':
P-MFunctionHolder.c:222:2: error: variable-sized object may not be initialized
P-MFunctionHolder.c:223:2: error: variable-sized object may not be initialized
P-MFunctionHolder.c:223:2: warning: passing argument 1 of 'Rotate90Array' from incompatible pointer type [enabled by default]
P-MFunctionHolder.c:199:8: note: expected 'char *' but argument is of type 'char (*)[(sizetype)(columnCount)]'
P-MFunctionHolder.c:224:2: warning: return from incompatible pointer type [enabled by default]
P-MFunctionHolder.c:224:2: warning: function returns address of local variable [enabled by default]
實際上'returnArray [i] [j] = array [uj] [i];'應該是'returnArray [i] [j] =&array [uj];'我猜。 –