Сегодня я немного писал код для учебы. И у меня проблема с 2d (а также с 3д массивами в C). Когда я выделяю память для массива или создаю массив c, например:
//dynamic
int *a=(int *)malloc(5*5*sizeof(int));
//OR
//static
int ar[5][5] = {0};
int *a= ar[0][0];
Я не знаю , как правильно перемещаться в этой матрице с помощью указателей . Я попробовал для l oop напечатать его элементы следующим образом:
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d ",*((a+i)+j));
}
puts("\n");
}
Но это не работает. Когда я ввел в массив первые 25 чисел int, начиная с 1, например:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
Я получил вывод printf, например:
1 6 11 16 21
6 11 16 21 22
11 16 21 22 23
16 21 22 23 24
21 22 23 24 25
Вывод включает только первый столбец и последнюю строку .
Я видел на YouTube учебник, как это правильно сделать, но почему-то неправильно понял этот топи c. Может кто-нибудь показать мне, как это сделать с помощью указателей, пожалуйста?
Спасибо за ваше время!