C C++ Java Data Structure Python JavaScript CSS Ajax PL/SQL PHP Puzzles C programs C++ programs Java programs

Home » C++ programming language

Passing Dynamically Allocated Two dimensional Array to a Function [with C++ program]

Learn: How to pass dynamic 2D array to a user defined function? In this article, we’ll see different ways of accessing 2D array through a function.
Submitted by Abhishek Jain, on July 23, 2017

The two dimensional array is the type of multidimensional array which is represented in the form of rows and columns, also known as matrix.

Dynamic allocation refers to the allocation of memory at runtime. Dynamic memory allocation allows your program to obtain more memory while execution, or to release it if it’s not required.

Now moving towards our objective, passing 2D array to a function requires two parameters rows and columns, which are runtime variables i.e. size of the 2D array (=rows*columns) decide/allocate at runtime.

Therefore to counter this situation we use pointers. Using pointer, it is easy to pass and access array through functions.

There are two ways to pass dynamic 2D array to a function:

1) Passing array as pointer to pointer( int **arr)

Using new operator we can dynamically allocate memory at runtime for the array. New operator returns the address of the space allocated .This method Passes array reference as double pointer to the function along with rows and columns.

#include<iostream>
using namespace std;

//function to display 2D array
void show(int **arr,int x,int y)
{
	int i,j;
	for(i=0;i<x;i++)
	{ 
		for(j=0;j<y;j++)
		{
			cout<<arr[i][j]<<" ";
		}
		cout<<endl;
	}
}

//main program
int main()
{  
	int n,m;
	//input number of rows and columns
	cout<<"Enter No. of rows: ";
	cin>>n;
	cout<<"Enter No. of columns: ";
	cin>>m;

	//pointer to 2D array
	int **A=new int*[n];

	//pointer initialization
	for(int i=0;i<n;i++)
	{
		A[i]=new int[m];
	}

	//input array elements
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>A[i][j];
		}
	}

	//display 2D array
	show(A,n,m);

	return 0;
}

Output

Enter No. of rows: 4
Enter No. of columns: 5
1 2 3 4 5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 2 

1 2 3 4 5
1 2 3 4 5
6 7 8 9 1
2 3 4 5 2

Passing array pointer(int *arr)

In this method we are passing array reference using pointer to the function and accessing 2D array as one dimensional array. Since 2D array stored in memory same as of one dimensional array.

#include<iostream>
using namespace std;

//function to display 2D array
void show(int *arr,int x,int y)
{
	int i,j,k=0;
	
	for(i=0;i<x;i++)
	{ 
		for(j=0;j<y;j++)
		{
			cout<<arr[k]<<" ";
			k++;
		}
		cout<<endl;
	}
}

//main program
int main()
{  
	int n,m;
	
	cout<<"Enter No. of rows: ";
	cin>>n;
	cout<<"Enter No. of columns: ";
	cin>>m;

	//2D array declaration
	int A[n][m];

	//input array elements
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>A[i][j];
		}
	}

	//display 2D arrray
	show(*A,n,m);

	return 0;
}

Output

Enter No. of rows: 3
Enter No. of columns: 4
1 2 3 4 5 6 7 8 9 10 11 12

1 2 3 4
5 6 7 8
9 10 11 12








COMMENTS