c-分段故障(多维数组)


#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

最新更新