分段错误(多维数组)

Segmentation fault (Multi-dimensional array)

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j;
    int (*a)[3]=NULL;
    for(i=0; i<4;i++)
    {
      for(j=0; j<3;j++)
      {
        scanf("%d", *(a+i)+j);
      }
    }
    for(i=0; i<4;i++)
      for(j=0; j<3;j++)
        printf("%5d", a[i][j]);
    printf("\n");
    return 0;
}

我上面的 C 代码有问题,它试图在屏幕上打印多维数组。当 运行 这段代码时,向我发送了一条分段错误消息,我不知道如何解决。

段错误是由于空指针int (*a)[3]=NULL

其中之一:动态分配它(在这种情况下,您必须在完成后释放它):

int (*a)[3] = malloc(sizeof *a * 4);

或将其声明为静态的:

int a[4][3];

此外,您缺少一些大括号:

for(i=0; i<4;i++) { // This one
    for(j=0; j<3;j++)
        printf("%5d", a[i][j]);
    printf("\n");
} // And this one