当我遍历这个二维指针数组时出现段错误
声明:
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));
无论 y 和 x 是什么,循环都会在 addr[2][0] 处返回一个段错误
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 *));
关于c - 通过二维指针数组循环的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749227/