У меня есть два двумерных массива, и я не знаю, почему или как адреса двух элементов, по одному из каждого массива, совпадают ... Вот исходный код:
#include <stdio.h>
int main()
{
int i,j,m,n,o,p,*ptr;
printf("Enter dimension of 1st matrix: ");
scanf("%d * %d",&m,&n);
printf("Enter dimension of 2nd matrix: ");
scanf("%d * %d",&o,&p);
int *a[m][n];
int *b[o][p];
if (n!=o) return 0;
printf("\nEnter 1st matrix:\n");
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{ printf("%d ",(a+i*(n-1)+i+j)); scanf("%d",(a+i*(n-1)+i+j)); }
printf("\nEnter 2nd matrix:\n");
for (i=0;i<o;i++)
for (j=0;j<p;j++)
{ printf("%d ",(b+i*(p-1)+i+j)); scanf("%d",(b+i*(p-1)+i+j)); }
/*Printing the matrices*/
puts("");puts("");
for (i=0;i<m;i++)
{for (j=0;j<n;j++)
{ ptr = (a+i*(n-1)+i+j);
printf(" %d ",*ptr); } puts("");}puts("");
for (i=0;i<o;i++)
{for (j=0;j<p;j++)
{ ptr = (b+i*(p-1)+i+j);
printf(" %d ",*ptr); } puts("");}
}
Ивот экран печати;
Из-за этого я получаю ошибки в простой программе для вычисления произведения двух матриц.Вопрос в том, это обычно?Разве компилятор или ОС не должны были позаботиться об этом?
Кроме того, почему я должен делать ptr = (a+i*(n-1)+i+j); printf(" %d ",*ptr);
?
Почему printf(" %d ",*(a+i*(n-1)+i+j));
не работает?