Вы можете позволить себе использовать гораздо меньше звездочек, как это.Обратите внимание, что код печати меняет порядок индексов по сравнению с вашим кодом.
#include <stdio.h>
#define TAM 2
void printMatriz(int matriz[TAM][TAM]);
int main(void)
{
int matriz[TAM][TAM];
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
{
printf("Matriz[%i][%i] = ", i, j);
if (scanf("%i", &matriz[i][j]) != 1)
{
fprintf(stderr, "failed to read an integer\n");
return 1;
}
}
}
printMatriz(matriz);
return 0;
}
void printMatriz(int matriz[TAM][TAM])
{
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
printf("%i\t", matriz[i][j]); // Reversed order of i, j
printf("\n");
}
}
Пример выполнения:
Matriz[0][0] = 19
Matriz[0][1] = 28
Matriz[1][0] = 30
Matriz[1][1] = 41
19 28
30 41
Обратите внимание, что при этом используется обозначение C99 для циклов for
,Избегая необходимости переменных i
и j
вне циклов.Если это проблема, восстановите определения переменных вне циклов.
Если вы действительно хотите использовать указатели на матрицы, вы можете использовать любой из этих двух вариантов кода:
#include <stdio.h>
#define TAM 2
void printMatriz(int (*matriz)[TAM]);
int main(void)
{
int matriz[TAM][TAM];
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
{
printf("Matriz[%i][%i] = ", i, j);
if (scanf("%i", &matriz[i][j]) != 1)
{
fprintf(stderr, "failed to read an integer\n");
return 1;
}
}
}
printMatriz(matriz);
return 0;
}
void printMatriz(int (*matriz)[TAM])
{
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
printf("%i\t", matriz[i][j]);
printf("\n");
}
}
Или:
#include <stdio.h>
#define TAM 2
void printMatriz(int (*matriz)[TAM][TAM]);
int main(void)
{
int matriz[TAM][TAM];
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
{
printf("Matriz[%i][%i] = ", i, j);
if (scanf("%i", &matriz[i][j]) != 1)
{
fprintf(stderr, "failed to read an integer\n");
return 1;
}
}
}
printMatriz(&matriz);
return 0;
}
void printMatriz(int (*matriz)[TAM][TAM])
{
for (int i = 0; i < TAM; i++)
{
for (int j = 0; j < TAM; j++)
printf("%i\t", (*matriz)[i][j]);
printf("\n");
}
}
Обратите внимание на различные обозначения, необходимые в последнем примере - в вызове (как в исходном коде) и при использовании матрицы.