[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); }
|
沒有留言:
張貼留言