Как работает scanf("%d", (a + i*m + j));?
Если a-массив, то как мы можем к нему прибавить im+j
// Выделение памяти
a = (int*)malloc(n*m * sizeof(int));
// Ввод элементов массива
for (i = 0; i<n; i++) // цикл по строкам
{
for (j = 0; j<m; j++) // цикл по столбцам
{
printf("a[%d][%d] = ", i, j);
scanf("%d", (a + i*m + j));
}
}
a + i*m + j == & ( a [ i*m + j ] )– AlexGlebe Apr 22 '21 at 16:35a— это не массив. Это указатель на первый элемент одномерного массива изn*mэлементов типаint. К указателям можно прибавлять целые числа. Про смысл такой операции можете немного почитать в этом ответе. В вашем примере с одномерным массивом работают так, будто в нём хранится матрица изnстрок иmстолбцов. – wololo Apr 22 '21 at 21:21