Мне нужно распечатать матрицу 3 на 3 в C. Я мог придумать три разных способа сделать это. Все ли они одинаково оптимальны или один метод лучше другого?Сравнение методов ссылки массива
Функция 1: Переходя к 2darray, используя индексы массивов
void printMatrix(int m[][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",m[i][j]);
}
printf("\n");
}
}
Функция 2: Передача указателя ДВМ, используя PTR арифметической
void printMatrix(int **m)
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t", *(*(m+i)+j));
}
printf("\n");
}
}
Функция 3: пропускания dbl, используя арифметику ptr (еще раз)
void printMatrix(int **m)
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",**m);
(*m)++;
}
(*m)=(*m)-3;
m++;
printf("\n");
}
}
+1 - оптимизируйте для readabilty _first_. Любой достойный компилятор будет определять лучший способ для вас на этом уровне микроуровни. Лучшая отдача от инвестиций будет достигнута на макроуровне (выбор алгоритма и т. Д.). – paxdiablo