#include<stdio.h>
int main()
{
int (*p)[3],i,j;
int (*q)[3];
int (*r)[3];
printf("Enter 6 integers of first matrix:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",*(p+i)+j);
printf("The matrix you have entered is:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf(" %d ", *(*(p+i)+j));
}
printf("\n");
}
printf("Enter 6 integers of second matrix:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",*(q+i)+j);
printf("The matrix you have entered is:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf(" %d ", *(*(q+i)+j));
}
printf("\n");
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
*(*(r+i)+j)=*(*(p+i)+j) + *(*(q+i)+j);
}
}
printf("The summation matrix is:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf(" %d ", *(*(r+i)+j));
}
printf("\n");
}
}
在这个程序中,我已经声明了3个指向3个整数数组的指针。当我执行时,第一个矩阵工作正常并显示。但是,当我输入第二个矩阵的整数时,它会崩溃。我尝试了很多,但失败了。
答案 0 :(得分:0)
正如你所说,你有一个指针,指针应该在写入内容之前指向一些内存位置。 在您的情况下,指针不指向任何有效的内存位置,因此崩溃。
如果您想要2 * 3矩阵,那么您应该
char *p[2];
p[0] = malloc(sizeof(int) *3);
然后
p[i][j]
有效。
同样,您应该为每个指针单独分配内存。