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;
}

 

這里提供一種將二維轉換為一維的思路:

轉換成二維數組以后怎么才能用更簡單的方式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個元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM