要想在函式中帶入乙個二維陣列
前提首先我們要知道二維陣列在記憶體中是如何分布的
假設定義乙個二維陣列 arr[3][3];
記憶體中的是這樣儲存的:
也就是說,二維陣列的
記憶體關係是連續的
,因此如果我們在函式中帶入乙個陣列
只需要陣列的
第一排的
第乙個元素的位址和行數
和列數三個條件
下面以乙個二維矩陣的轉置為例:關鍵點是如何利用二維陣列的第一排首元素的位址去把整個陣列表示出來假設:陣列 int arr[3][3];arr的值為第一排首元素位址
已知行列數為3,令int *p=arr;
可以用 *(p+i*3+j)表示第i排第j列的元素
因此函式只需要定義乙個接收陣列第一排首位址元素的指標型別的形參即可
下面見完整**:
#include#includevoid array_transpose(int *arr, int rank)//rank為陣列的列數 代表每排有多少個元素 }}
//配**:
int main()
; int i, j,s;
array_transpose(a, 5);
for (i = 0; i < sizeof(a)/sizeof(a[0]); i++)
}printf("\n");
} system("pause");
return 0;
}
**實現的功能:
不使用
array_transpose()
原本輸出應該是這樣
使用array_transpose()
轉置後
利用**中的方法可以實現二維陣列的轉置,可以作為俄羅斯方塊的色塊變化方向的基礎
二維陣列的使用
define crt secure no warnings include include include intdemo01 void int a2 3 4 int a3 4 int i 0 int j 0 for i 0 i 3 i printf n printf n 16 二維陣列陣列名代表第...
二維陣列的使用
public class doubledimensionalarray 輸出第二行第乙個元素的值,也就是4 system.out.println a1 1 0 輸出第三行第三個元素的值,也就是7 system.out.println a1 2 2 輸出二維陣列的長度,實際上就是二維陣列中一維陣列的長...
二維陣列 二維陣列和指標
include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...