Двумерный массив – это одномерный массив из одномерных массивов.
Для примера определим двумерный массив a размером 3 x 4.
int a [3] [4] ;
Покажем, что такое определение логически вытекает из представления о двумерном массиве как об одномерном массиве из одномерных же массивов.
Начнем с того, что сначала объявим промежуточный тип M – одномерный массив из 4-х целых чисел
typedef int A [4];
Теперь определение A x; означает тоже самое, что int x[4];, каким бы ни было выражение x.
Определим одномерный массив из элементов типа A, т.е. массив символов.
A a[3];
В роли x здесь выступает выражение a[3]. Подставим его в int x[4]; и получим объявление двумерного массива без промежуточного типа M, как это обычно и делается.
int a[3][4];
Исходя из общего принципа размещения элементов массива в памяти (плотно и в порядке возрастания номеров), можно утверждать, что элементы двумерного массива a[3][4] займут места в памяти в следующем порядке: a[0][0], a[0][0], a[0][1], a[0][2], a[0][3], a[1][0], a[1][1], a[1][2], a[1][3], a[2][0], a[2][1], a[2]2], a[2][3].
//Ввод и вывод двумерного массива
#include "stdafx.h"
#include "conio.h"
int _tmain(int argc, _TCHAR* argv[])
{ float a[3][4];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{printf("Введите цифры, \n");
scanf("%f ", a[i][j]);
}
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ printf("%f ", a[i][j]);
printf("\n");
}
getch();
return 0;
}