主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析
共:💬84 🌺26
肯定不对,但不知道你迷糊在什么地方。C原则上没有多维数组的概念,任何多维数组实际上都是一个更长的一维数组。你这个地址传递当然是对的,C只管把地址传过去不管你传的是什么地址,自己保证正确。问题在于即使主函数里面定义了个a[m][n],函数f1里面并不知道n,你也无法重新定义,a[0][0]也许还能知道(没把握),其他的统统不知道是何物。
C原则上是不推荐多维数组的,部分原因就在于会引起你这样的混乱。替代方法简单,开始就定义为一维数组a[m*n],使用的时候也按照这个方法使用即可。至于带两个星号的比如int **x,这个是多级间指,**x才是int数字,而多维数组的a,不管多少维,即使是int a[i][j][k][l][m][n],*a就是数字。二者完全不一样。(int **)a等于是进行了强制类型转换,把一个int指针变成了一个指向指针的指针。
根本上,我还是建议你在C不要用多维数组,一干二净。
- 相关回复 上下关系8
🙂感觉您这个就是Java那个搞笑的“二维数组” 七月半 字0 2009-02-22 08:42:20
🙂恩,不知道java里是怎么实现的。 火雷噬嗑 字0 2009-02-22 13:19:17
🙂java里的数组都是对象 七月半 字413 2009-02-23 09:07:02
😥你这个我都看糊涂了
🙂a[0][0] != *a (设a是二维数组) frnkl 字40 2009-02-22 09:37:00
🙂要看他这个多维数组怎么定义的 电子赵括 字188 2009-02-22 15:14:05
🙂sample code 1 frnkl 字231 2009-02-22 15:48:55
🙂还真有点意思,看来是我搞错了 电子赵括 字575 2009-02-22 16:04:37