西西河

主题:【求助】向各位高手请教一个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**类型。但要注意越界和释放问题。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河