#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][3]={{0,1},{2,3},{5,6}},**b,i,j;
b=(int **)calloc(3,sizeof(int *));
for(i=0;i<3;i++)
{
b[i]=(int *)calloc(3,sizeof(int));
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=(i+1)*(j+1);
}
}
printf("%d %d %d %d\n",*(*a+4),**a+4,*(*b+4),**b+4);
printf("%d %d %d %d\n",*(a[2]-2),**(a+2),*(b[2]-2),**(b+2));
return 0;
}
Вывод, который я получаю:
3 4 2 5
3 5 6 3
По мне, я должен получить:
3 4 4 5
3 5 4 3
Причина:
*(*b+4) = *(b[0]+4)
. b[0]+4
указывает на b[1][1]
, поэтому это значение должно быть 4
, что является значением матрицы в 1,1
позиции
*(b[2]-2)
, теперь b[2]-2
указывает на b[1][1]
, поэтому значениеснова должно быть 4
скажите, пожалуйста, почему я получаю другой вывод