C语言一维数组转换为二维数组

一维转二维代码示例:数组

#include <stdio.h>
#include <stdlib.h>

#define ROW 3 
#define COL 2

int main(int argc, char *argv[])
{
    int arr1D[]  = {1,2,3,4,5,6};
    int arr2D[ROW][COL];
    int i,j;
    //一维维整型数组转换为二维整型数组
    for(i=0;i<ROW;i++)
    {
        for(j=0;j<2;j++)
        {
         arr2D[i][j]=arr1D[i*COL+j];
        }
    }
    //二维整型数组打印显示 
        for(i=0;i<ROW;i++)
    {
        for(j=0;j<COL;j++)
        {
          printf("%d  ", arr2D[i][j]);  
        }
         printf("\n");    
    }
    system("pause");
    return 0;
}

 

这里提供一种将二维转换为一维的思路:spa

转换成二维数组之后怎么才能用更简单的方式a[m][n]去表达呢?若是用那个表达式的话就太麻烦了,我要进行大量的操做,容易出问题。 


答:这个能够用宏来实现。举个例子说,好比你定义一个大小为100的一维数组A,而后你须要别人输入m=8,n=9(不少状况别人不可能按照你的意图来恰好用m和n整除一维数组的下表最大值,也就是说那个一维数组只须要保证足够大就能够了),而后你但愿获得一个8*9的二维矩阵B[8][9]。

引用这个二维矩阵的时候,直接使用B[3][4]来引用第三行第四列的元素?
用宏定义(如下宏定义并无上机调试,只是提供思路)
#define B[(x)][(y)]  A[((x*m)+(y%n)]
解释一下:x*m,加入你须要B[3][4],那么就是对应一维数组第3*8+4%9=28个元素。调试

相关文章
相关标签/搜索