как новичок в C Я немного озадачен двумерными массивами.
Если я хочу представить матрицу из 3 строк и 5 столбцов, я думаю, правильное объявление:
char a[3][5];
Итак, это массив из 3 указателей на 5 массивов символов или как?
Почему каждый раз, когда я пытаюсь просмотреть его, как показано ниже, кажется, что он читает неправильные результаты?
int x, y;
for( x=0; x<3; x++ ){
for( y=0; y<3; y++ ){
printf( "%c", a[x][y] );
}
}
Существуют ли следующие эквивалентные и правильные способы его инициализации?
char a[3][5] = {
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
};
char a[3][5] = {1,0,0,0,1,
1,0,0,0,1,
1,0,0,0,1};
Спасибо за любое возможное предстоящее объяснение.
EDIT
Извините за опечатки, код не скопирован. Кстати, я продолжаю читать их так, как будто они читаются по вертикали, а не по горизонтали.
Также в примере из этого урока http://www.cplusplus.com/doc/tutorial/arrays/ он считывает массив не так прямолинейно, как мне кажется, работает на 5x3, Высота Ширина, у x, столбцы структура строк вместо 3x5, ширина высота, x y. строки столбцы один:
#define WIDTH 5
#define HEIGHT 3
int jimmy [HEIGHT][WIDTH];
int n,m;
int main ()
{
for (n=0;n<HEIGHT;n++)
for (m=0;m<WIDTH;m++)
{
jimmy[n][m]=(n+1)*(m+1);
}
return 0;
}