This is a small slice of code adapted form a school project I was working on that I feel really helps explain the concept of pointers with arrays. It’s a 2-D array: an array of pointers, each of which points to an array of ints. It essentially forms a 2×2 grid (but you can make it other sizes too).
//function prototype
void fillMatrix(int** myArray, int size);
//main() function
int main()
{
const int SIZE = 4;
int** p_myArray = new int*[2]; //make the initial x-axis which has two slots
p_myArray[0] = new int[2]; //make the 1st y-axis which has two slots
p_myArray[1] = new int[2]; //make the 2nd y-axis which has two slots
//alternatively, you could do it this way (if making a 3x3 grid with SIZE=3):
/*
int** p_myArray = new int*[3];
for (int i = 0; i < 4; i++) //for every x-axis...
{
p_myArray[i] = new int[3]; //make a y-axis three slots big
}
*/
//function call
fillMatrix(p_myArray, SIZE);
}
//function definition
void fillMatrix(int** myArray, int size)
{
cout << "Please enter " << size << " integers to fill the array." << endl;
for (int i = 0; i < (2); i++)
{
cin >> myArray[0][i];
}
}
Just to help visualize it, here is what a 2-D, 5×5 array looks like:
