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

2025-04-01 19:18:56
推荐回答(2个)
回答1:

公式错了:应是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个元素)

回答2:

只要你设想把已经排成一长条的、编好号的0到99号地砖,按照行优先的原则,即按顺序先铺满第一行,再铺第二行,再铺第三行等等,平铺到一个指定的矩形中,比如10×10的矩形,或者5×20矩形,或者20×5的矩形等等。你就很容易理解这个公式了。