2-мерные массивы, переданные функции в c ++ - PullRequest
0 голосов
/ 18 декабря 2010

Я работаю над вычислениями в двумерном массиве

, но продолжаю получать неприятную ошибку.

я вызываю функцию:

if(checkArray(array))

и пытаюсь передать ее следующим образом:

bool checkArray(double array[][10])  //or double *array[][10] to no avail  

ошибка

ошибка: невозможно преобразовать 'double () [(((unsigned int) (((int) n) + -0x00000000000000001)) + 1)]' в 'double ' для аргумента '1' в 'bool checkArray (double *) '

фрагмент кода

//array declaration

int n = 10;
double array[n][n];

//function call to pass in array


   while(f != 25)
   {

        cout<<endl;
    cout<<endl;

        if(checkArray(array)) //this is the line of the error
         {
      cout<<"EXIT EXIT EXIT"<<endl;
        }

        f++;

    }

    //function declaration

       bool checkArray(double *array)//, double newArray[][10])
       {
            double length = sizeof(array);
            for(int i = 0; i < length; i++)
            for(int j = 0; j < length;j++)
            {
                double temp = array[i][j];
                    }
         }

Ответы [ 2 ]

2 голосов
/ 18 декабря 2010

Когда я смотрю на ошибку, которую вы получаете, у меня создается впечатление, что ваша функция имеет недопустимое объявление.Похоже, что он ожидал бы только одномерный массив: double *.

Однако ваш вопрос кажется мне немного неясным ... Не могли бы вы вставить код функции?

0 голосов
/ 18 декабря 2010

Это действительно прямая (если редактируется) копия вашего кода?

Эта строка:

int n = 10; double array[n][n];

недопустима в C ++.Вы не можете объявить массив с переменными размерами.Это будет работать:

const int n = 10; double array[n][n];

Вы хотите объявить checkArray как:

 bool checkArray(double array[][10])

, и вы абсолютно не хотите делать это:

double length = sizeof(array);

, потому что этоприсваивает length размер указателя в байтах (4 или 8.) Вам необходимо явно указать количество строк.Кроме того, вам гораздо лучше объявить length как int, а еще лучше size_t.

Это выглядит как приличный ресурс: http://www.fredosaurus.com/notes-cpp/arrayptr/22twodim.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...