Как инициализировать нулевой массив в C ++ - PullRequest
0 голосов
/ 16 апреля 2011
int M=7;
int N=6;
int i=0;
int x=N*M;
int val3[x] = {};
for(int i=0;i<x;i++)
{
      //some calculations
      if (my condition)
      {
            //if this condition ok, change value of val[i]
      }
      cout << i << "   " << val[i] << endl;
}

Я хочу инициализировать ноль array(val), я использовал вышеуказанные коды, но я получил ошибку, которая говорит, что объект переменного размера не может быть инициализирован. не возможно инициализировать нулевой массив? нужна ваша помощь .... спасибо

Ответы [ 3 ]

4 голосов
/ 16 апреля 2011

C ++ не включает массивы переменной длины; int val3[ x ] с x непостоянным является особенностью C99. Не все функции C99 являются частью C ++. Попробуйте использовать std::vector.

#include <vector>

// contains an array of length x, automatically filled with zeroes
std::vector< int > val3( x );
3 голосов
/ 16 апреля 2011
int val3[x] = {};

C ++ не позволяет инициализировать массивы переменной, которая не является константой времени компиляции.Используйте const int для всех переменных (кроме i).Кстати, вы не используете этот первый int i (вне цикла).

0 голосов
/ 16 апреля 2011

В качестве альтернативы предложенному выше std :: vector вы также можете сделать:

int M=7;
int N=6;
int x=N*M;

int* val3 = new int[x];
memset(val3, 0, x * sizeof (int));
for (int i = 0; i < x; i++)
{
    // ...
}
// ...
delete [] val3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...