Программирование на языке C: подписанное значение не является ни массивом, ни указателем - PullRequest
1 голос
/ 15 сентября 2011

Я получаю ошибку

подписанное значение не является ни массивом, ни указателем

, когда я пытаюсь скомпилировать свою программу.Я понимаю, что это как-то связано с тем, что переменная не была объявлена, но я проверил все, и она, казалось, была объявлена.

static char getValue(LOCATION l)
{
    /*return carpark[l.col][l.row]; // Assumes that location is valid. Safe code is   
        below:
    */


    if (isValidLocation(l)) {
        return carpark[l.col][l.row]; <<<<<<<< this line
        }       // returns char if valid (safe)
    else {
        return '.';
    }

Что соответствует этой части кода в заголовке

typedef struct
{
    /* Rectangular grid of characters representing the position of
       all cars in the game.  Each car appears precisely once in
       the carpark */
    char grid[MAXCARPARKSIZE][MAXCARPARKSIZE];
    /* The number of rows used in carpark */
    int nRows;
    /* The number of columns used in carpark */
    int nCols;
    /* The location of the exit */
    LOCATION exit;
} CARPARK;

Автопарк был объявлен в основной программе с:

CARPARK carpark. 

Спасибо запомощь.

Ответы [ 2 ]

7 голосов
/ 15 сентября 2011

carpark не является массивом, поэтому вы, вероятно, хотите что-то вроде:

return carpark.grid[l.col][l.row];
0 голосов
/ 15 сентября 2011

Сообщение об ошибке сообщает точно , в чем проблема. Переменная carpark не является ни массивом, ни указателем, поэтому к ней нельзя применить оператор [].

carpark.grid, однако - это массив, так что вы можете написать

return carpark.grid[l.col][l.row];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...