主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析
共:💬84 🌺26
在c里,默认多维数组结构,实际上一通过一个内存片实现的。a[][],指向一个内存片,a指向首地址,从首地址开始,里面顺序存着a[0][0],a[0][1].....a[1][0]a[1][1]...等等。。
int**类型指向一个地址类型,which指向一个int。
所以a[][]定义里a是个指向int的指针,而不是指向一个int指针的指针。
----------------------------------
另外一种常用的动态实现多维数组的方法是这样子的。
假如要实现一个5*5的二维数组,
int ** a = (int **) malloc(5*sizeof(int *));
for (int i = 0;i<5;i++) {
a[i] = (int *) malloc (5*sizeof(int));
}
之后就可以用a[1][2]的形式访问多维数组,传递的时候传递int**类型。但要注意越界和释放问题。
- 相关回复 上下关系8
🙂你牛,这种秘密都被你发现了 frnkl 字44 2009-02-23 10:43:13
🙂透彻 数值分析 字22 2009-02-23 10:20:20
🙂我对指针的理解是这样的 七月半 字1081 2009-02-22 05:50:30
🙂你搞错了多维数组的概念。
🙂你这个分配法有问题 数值分析 字399 2009-02-23 10:29:28
🙂不错,这样在使用的时候更方便点儿了。花 七月半 字128 2009-02-22 08:12:29
🙂对,是在堆里而不是在栈里。 火雷噬嗑 字0 2009-02-22 08:32:22
🙂感觉您这个就是Java那个搞笑的“二维数组” 七月半 字0 2009-02-22 08:42:20