2012年1月31日 星期二

[C/C++基礎]- 二維陣列傳遞與二維轉一維技巧

[C/C++基礎]- 二維陣列傳遞與二維轉一維技巧


本篇要分享如何將二維陣列(函數)傳遞與二維轉一維(函數傳遞參數)技巧,有興趣的(C/P)同好,歡迎來(C/P)一下,哈 ^ ^












程式碼



#include <stdio.h>

/*

由程式可以發現由二維轉一維就可以不用指定陣列維度,程式更靈活

但缺點是要有轉換公式

*/

void ShowArray(int *a)

{

    int i,j,k;

    int x=3;

    int y=3;

     for(i=0;i<x;i++)

     {

         for(j=0;j<y;j++)

         {

            //k=j+i*(j+1);//二維轉一維公式:column + row*「實際行數」---->錯誤公式

             k=i*y+j;//*內限+

            printf("intarray[%d][%d]=%d\t",i,j,a[k]);

         }

        printf("\n");

     }

}

void ShowArray(int a[][3])//傳送二維陣列時必須請楚說明『行數』

{

    int i,j;

     for(i=0;i<3;i++)

     {

         for(j=0;j<3;j++)

         {

            printf("intarray[%d][%d]=%d\t",i,j,a[i][j]);

         }

        printf("\n");

     }

}

void main(void)

{

    int i,j,k;

    int *pintarray;

    int intarray[3][3];

     k=0;

     for(i=0;i<3;i++)

         for(j=0;j<3;j++)

         {

             k++;

            intarray[i][j]=k;

         }

    ShowArray(intarray);

    pintarray=(int*)intarray;

    printf("二維轉一維列印\n");

    ShowArray(pintarray);

}

 



 




沒有留言:

張貼留言