子函式使用二級指標返回二維陣列的值
阿新 • • 發佈:2019-02-03
使用二級指標返回二維陣列的值
一直以來都不會將函式的結果以陣列的形式返回,今天終於碰巧解決了!
函式功能:功能十分簡單,實現兩個二維陣列的減法,並將結果以陣列的形式返回。
void ** SubArray(void **a, int row, int col, void **b) //返回的資料是一個 二維指標,或者 也可稱為 二維陣列
{
//********定義二級指標***********
void **c;
//*********二級指標初始化 begin************
int n = row;
int m = col;
c = (void **)malloc(n*sizeof(int *)); //分配n行
for (int i = 0; i<n; i++)
{
c[i] = (void *)malloc(m*sizeof(int)); //為每行分配m個數據空間
}
//*********二級指標初始化 end***************
for (int i = 0; i != row; ++i)
{
for (int j = 0; j != col; ++j)
{
*((int *)c + i*col + j) = *((int *)b + i*col + j) - *((int *)a + i*col + j);
}
}
return c;
}
顯示二維陣列:
void dispArray(void **a, int row, int col)
{
for (int i = 0; i != row; ++i)
{
for (int j = 0; j != col; ++j)
cout << *((int *)a + i*col + j) << " ";
cout << endl;
}
cout << endl;
}
呼叫:
dispArray((void **)SubArray((void **)a, row, col, (void **)b), row, col);
其中,二維陣列a、b的行數row、列數col 均相同。
row=sizeof(a)/sizeof(a[0]);//行數
col=sizeof(a[0])/sizeof(int);
//列數,其中int為二維陣列a的資料型別。