请问C语言中数字一维数组转换二维数组通项公式?

请问C语言中数字一维数组转换二维数组通项公式a[i][j]=b[i*行+j]您知道出处在哪里吗?或者您能帮忙解答一下也行。

公式错了:应是b[i*最大列数+j]。
一句话解释:二维数组内元素地址是连续的,在内存中就是一维数组。
所以反过来也是一样,公式a[i][j]=b[i*行+j]。就是按照二维数组的行列值在一维数组中取值。
比如定义二维数组a[2][3]在内存中等同于定义一维数组b[2*3];
而取a[1][2]值,对应一维数组下标5的元素,相当于取b[1*3+2](a[1][2]按连续地址数就是1行加3个元素)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-06
只要你设想把已经排成一长条的、编好号的0到99号地砖,按照行优先的原则,即按顺序先铺满第一行,再铺第二行,再铺第三行等等,平铺到一个指定的矩形中,比如10×10的矩形,或者5×20矩形,或者20×5的矩形等等。你就很容易理解这个公式了。
相似回答