C и C++ не имеют многомерных массивов. Таким образом, чтобы сделать это, вам придется делать дополнительные ассигнования:
Во-первых, выделить память:
int rows = 1;
int columns = 5;
int** mat = new int*[columns];
for(int i = 0; i < columns; ++i)
{
mat[i] = new int[rows];
}
Index Ваша матрица:
int x = 1; // Column number, x-movement
int y = 0; // Row number, y-movement
//mat[x][y] = ???;
Не забывайте, что свободной памяти вы выделили:
for(int i = 0; i < columns; ++i)
{
delete [] mat[i];
}
delete [] mat;
Или, используйте std :: vector. Это гораздо проще в использовании и понять:
#include <vector>
int rows = 1;
int columns = 5;
std::vector<std::vector<int > > mat = std::vector<std::vector<int > >();
mat.resize(columns);
for(int i = 0; i < 5; ++i)
{
mat[i].resize(rows);
}
//mat[1][0] = 100;
'(* PTR) + 1', или вы' ер = * ptr' затем марш по элементам строки с помощью '* ер ++'. – lurker
Матричные элементы должны быть просто 'mat [i] [j]', но вы должны сначала выделить память для каждой строки ... –
Вы говорите, что вам нужна матрица 1X5, поэтому вы должны иметь только 1 строку. Как вы можете получить доступ к следующей строке при использовании 'ptr ++'? Если вы попытаетесь получить к нему доступ, это будет ошибка seg. Вы должны попробовать опубликовать [SSCCE] (http://sscce.org/) – srikanta