西西河

主题:【求助】向各位高手请教一个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 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


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

Copyright © cchere 西西河