#include // CSS 332 using namespace std; void fill(int **&, int); void print(int **&, int); void cleanup(int **&, int); int main() { int **A; //double pointer used to store dynamic grid A = new int *[3]; //dynamically allocate an array of pointers for rows // could use for loop A[0] = new int[3]; //allocate 1st row dynamically A[1] = new int[3]; //allocate 2nd row dynamically A[2] = new int[3]; //allocate 3rd row dynamically fill(A, 3); print(A, 3); cleanup(A, 3); return 0; } //----------------------------------- fill ---------------------------------- // fill array with appropriate values // Because arrays are refs following also works: void fill(int **A, int n) void fill(int **&A, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { A[i][j] = i - j; } } } //-------------------------------- print ------------------------------------ // traverse by row, then column void print(int **&A, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << A[i][j] << " " ; } cout << endl; } } //--------------------------------- cleanup --------------------------------- // delete all memory allocated // Because arrays are refs following also works: void cleanup(int **A, int n) void cleanup(int **&A, int n) { for (int i = 0; i < n; i++) { delete [] A[i]; //dynamically deallocate each row A[i] = NULL; } delete [] A; //dynamically deallocate array of pointers A = NULL; }