耐电压是什么:二级指针的简单问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 13:23:53
int **a=(int**)malloc(sizeof(int*)*10);
*a=(int*)malloc(sizeof(int)*10);
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++)
a[i][j]=1;
请问错在哪里啊?

a指向一个含10个int指针的数组,你的原意可能是想让每个指针都指向一个含有10个int数据的数组,但你只给第1个指针指向的数组分配了空间,所以给
a[1][0]赋值时就出错了。
应该这样写:
int **a=(int**)malloc(sizeof(int*)*10);
for(int k=0;k<10;k++)
{
*(a+k)=(int*)malloc(sizeof(int)*10);
}
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++)
a[i][j]=1;

应该对每一个*a指针都开辟相应空间
可以更改为
int **a=(int**)malloc(sizeof(int*)*10);
for(int i=0;i<=3;i++) {
a[i]=(int*)malloc(sizeof(int)*10);
for(int j=0;j<=3;j++)
a[i][j]=1;
}
还有一点,如果只开辟4*4的二维数组,不应该开辟10*10的空间