Following diagrams help me to remember the subject of dynamically allocating multi-dimensional arrays in C++.
Pointer-to-integer (simple integer array) declaration and representation: Can be considered as an array of integers.
int* ptrToInt;
Pointer-to-pointer-to-integer (multi-dimensional matrix) declaration and representation: Can be considered as array of arrays of integers.
int** ptrToPtrToInt;
#include <QCoreApplication>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int** myRectRegion;
int numRows = 4;
int numCols = 3;
//allocate double pointer
myRectRegion = new int* [numRows];
for(int i=0;i<numRows;i++)
myRectRegion[i] = new int[numCols];
//initialize double pointer
for(int i=0; i<numRows; i++)
for(int j=0;j<numCols;j++)
myRectRegion[i][j] = 1;
//print double pointer elements
for(int i=0; i<numRows; i++){
for(int j=0; j<numCols; j++){
cout << myRectRegion[i][j];
}
cout << "\n";
}
//free deallocate double pointer
for(int i=0;i<numRows;i++)
delete[] myRectRegion[i];
delete[] myRectRegion;
return a.exec();
}
When the application is run, a 4X3 matrix is displayed in the terminal window.
There is also a helpful tutorial about dynamic allocation of multi-dimensional arrays in C at : http://c-faq.com/~scs/cclass/int/sx9b.html
No comments:
Post a Comment