当我在这个二维指针数组中循环时出现了分段错误
宣言:
char **addr;
addr=malloc((y)*sizeof(char)); //y is 3
for(i=0;i<y;i++)
{
*(addr+i)=malloc(x*sizeof(char)); //x is 100
}
独立通道工程:
*(*(addr+2)+0)='a';
printf("%c\n",*(*(addr+2)+0));
循环在addr[2][0]处返回一个分段错误,而不管y和x是什么
for(j=0;j<x;j++)
{
for(i=0;i<y;i++)
{
printf("%d %d\n",j,i);
*(*(addr+j)+i)='a';
}
}
最佳答案
addr=malloc((y)*sizeof(char));
必须替换为
addr = malloc(y * sizeof(char *));