#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