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個元素。調試

相關文章
相關標籤/搜索