二位陣列傳參及二位陣列動態分配問題

2022-04-04 00:09:44 字數 1430 閱讀 7806

//二位陣列引數傳遞

//1.

void display1(int arr[4], const int rows)

cout << endl;

} cout << endl;

}//2.

void display2(int(*parr)[4], const int rows)

cout << endl;

} cout << endl;

}//parr[i]等價於*(parr+i)

//3.

void display3(int **parr, const int rows, const int cols)

cout << endl;

} cout << endl;

}void display4(int **parr, const int rows, const int cols)

cout << endl;

} cout << endl;

}int main()

; display3((int**)arr, rows, cols);//不能使用display4

cout << "*****==" << endl;

//動態二位陣列

int **p;

p = new int*[rows];//建立行指標(陣列指標)

for (int i = 0; i < rows; ++i)

for (int i = 0; i < rows; ++i)

for (int j = 0; j < cols; ++j)

p[i][j] = i * cols + j;

display4(p, rows, cols);

//刪除行陣列空間

for (int i = 0; i < rows; ++i)

delete p[i];

//刪除行指標

delete p;

p = nullptr;

//一次性分配空間

int **p1;

p1 = new int*[rows];

p1[0] = new int[rows*cols];

for (int i = 0; i < rows; ++i)

p1[i] = p1[0] + cols*i;

for (int i = 0; i < rows; ++i)

for (int j = 0; j < cols; ++j)

p1[i][j] = i * cols + j;// 或者 *(p1[0]+i*cols+j) = i * cols + j;

display4(p1, rows, cols);

display3((int**)p1[0], rows, cols);

delete p1[0];

delete p1;

}

C語言二位陣列

前言 今天在實現裝配線排程程式時候,用到了二維陣列,並將其作為函式的引數。在寫程式的時候,遇到一些問題,即二維陣列做函式的引數應該如何正確表示。我寫程式的錯誤如下程式所示 1 include 2 void print int a 3 3 67intmain 8 10print a 11return0...

二位陣列與指標

include include using namespace std void disparry int a 2 3 int main void c是乙個指標,指向的元素int 3 即arr的行元素 int c 3 arr int p p int arr p指向arr 0 0 也可以說是arr 0...

二位陣列和指標(參考)

二維陣列和指標 用指標表示二維陣列元素。要用指標處理二維陣列,首先要解決從儲存的角度對二維陣列的認識問題。我們知道,乙個二維陣列在計算機中儲存時,是按照先行後列的順序依次儲存的,當把每一行看作乙個整體,即視為乙個大的陣列元素時,這個儲存的二維陣列也就變成了乙個一維陣列了。而每個大陣列元素對應二維陣列...