有關型如int[][]的二維陣列對應形參書寫的幾種方式,以及使用這個形參的函式該如何查詢某個元素的下標。
阿新 • • 發佈:2021-01-13
個人的第一篇部落格。
有關型如int[][]的二維陣列對應形參書寫的幾種方式,以及使用這個形參的函式該如何查詢某個元素的下標。
#include<algorithm> //查詢二維陣列方式1 int getEle(int** a)//二次指標,接受二維陣列第一行的首地址,使用時相當於把二維陣列按一維陣列讀取。因為二維陣列的元素儲存是連續的。 { auto tmp = a+1; auto b = std::find((int*)a+3, (int*)a+6, 5);//查詢第二行元素“5”的列下標 return (int)(b - ((int*)a+3)); } //查詢二維陣列方式2 int getEle2(int a[][3])//第一維未確定的二維陣列指標 { auto b = std::find(std::begin(a[2]),std::end(a[2]),9);//查詢第三行元素“9”的列下標 return b - a[2]; } //查詢二維陣列方式3 int getEle3(int (*a)[3])//寬度為3個整型的指標變數 { auto b = std::find(std::begin(a[2]), std::end(a[2]), 9);//查詢第三行元素“9”的列下標 return b - a[2]; } int main() { //以下面的二維陣列為例 int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; int b1 = getEle((int**)a);//使用方法1 int b2 = getEle2(a);//使用方法2 int b3 = getEle3(a);//使用方法3 return 0; }
本文雖對形參舉例,但這三種形參的書寫方式也可以用作對二維陣列的型別轉化。