分段错误(多维数组)
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
#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