主题:【求助】向各位高手请教一个c语言中数组与指针的问题 -- 数值分析
共:💬84 🌺26
C语言对于指针变量以下标操作取值实质上是这样做的。如果有,
int *x;
则x[m] 实际上是取地址(x+m*int长度)处的整数值
而对于int **y
则y[m][n] 实际上是取地址 (y+m*(int*长度))中的值后,再加上n*int长度的值,以新值做为一个地址再取该地址中的值。
而对于二维数组int a[h][c],
a[m][n]是取地址 a+m*c*int长度 + n*int长度处的整数值。
也就是说,你例中的x[0][0]实质上为
*(*(x))所以其值与你预期的不一致。
------------------
附注:第一次a[m][n]的计算公式写错。现予更正
另外frnkl朋友指出y[m][n]计算公式中的错误,也已改正。谢谢frnkl。
本帖一共被 2 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
🙂这个靠谱.... 熊熊熊熊 字0 2009-02-19 19:48:19
🙂数组只能认为是指针,不能认为是递指针; 飞来飞去 字156 2009-02-19 14:04:03
🙂考虑另一个方法呢 禾影 字49 2009-02-18 20:37:06
🙂原因是这样的(详见内)
🙂【讨论】笔误? 1 frnkl 字247 2009-02-19 19:34:17
🙂谢谢指正,马上修改。 1 非吾有 字0 2009-02-19 20:11:09
🙂花一个。再稍微改它一改,哈哈。 frnkl 字42 2009-02-19 20:21:28
😥脸红中 非吾有 字0 2009-02-20 06:25:46