使用指向整数的二维矩阵求和

时间:2014-12-10 18:36:21

标签: c pointers matrix

#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个整数数组的指针。当我执行时,第一个矩阵工作正常并显示。但是,当我输入第二个矩阵的整数时,它会崩溃。我尝试了很多,但失败了。

1 个答案:

答案 0 :(得分:0)

正如你所说,你有一个指针,指针应该在写入内容之前指向一些内存位置。 在您的情况下,指针不指向任何有效的内存位置,因此崩溃。

如果您想要2 * 3矩阵,那么您应该

char *p[2];

p[0] =  malloc(sizeof(int) *3);

然后

p[i][j]有效。

同样,您应该为每个指针单独分配内存。