主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析
共:💬84 🌺26
这个分配法有问题,数组a的地址不连续
我修改一下,分配nx*ny的二维数组:
int *a=(int**)malloc(nx*sizeof(int*));
a[0]=(int*)malloc(nx*ny*sizeof(int));
for (int i=1;i<nx;i++)
{
a[i]=a[0]+ny*i;
}
释放时
free(a[0]);
free(a);
这样的好处是,二维数组的地址是连续的
比如你要初始化,就可以
memset(a[0],'\0',nx*ny*sizeof(int));
原来你那种分配法就不行。
再比如
*(a[0]+m*ny+n)等于a[m][n],原来的分配法就不行
- 相关回复 上下关系8
🙂透彻 数值分析 字22 2009-02-23 10:20:20
🙂我对指针的理解是这样的 七月半 字1081 2009-02-22 05:50:30
🙂你搞错了多维数组的概念。 1 火雷噬嗑 字594 2009-02-22 02:49:37
🙂你这个分配法有问题
🙂不错,这样在使用的时候更方便点儿了。花 七月半 字128 2009-02-22 08:12:29
🙂对,是在堆里而不是在栈里。 火雷噬嗑 字0 2009-02-22 08:32:22
🙂感觉您这个就是Java那个搞笑的“二维数组” 七月半 字0 2009-02-22 08:42:20
🙂恩,不知道java里是怎么实现的。 火雷噬嗑 字0 2009-02-22 13:19:17