Рассмотрим этот код:
#include <stdio.h>
#define N 5
void printMatrix(int (*matrix)[N],int n)
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%d",matrix[i][j]);
printf("\n");
}
}
int main()
{
int R[N][N]={{1,2,3},{4,5,6},{7,8,9}};
printMatrix(R,3);
}
Это прекрасно работает, как и ожидалось.
Теперь я подумал написать функции, работающие с 2D-матрицами, в отдельном исходном файле и связать их там, где это необходимо.
Но тут я столкнулся с проблемой, как в функции printMatrix
, размер массива int
, на который указывает matrix
(т.е. N
), требуется во время компиляции. Итак, мои функции не будут работать в других случаях, когда размер другой.
Итак, как с этим справиться?
Динамические массивы — это решение, но я хочу знать, можно ли это сделать со статическими массивами.