# How to access a 2D array using pointers in C

In this article, we are going to learn how to access a 2D array using pointers in C.We have explained in detail by step by step logic to access elements of the array.

### Write C program to input and print elements of 2D array using pointers and function

Let us first understand how we access a 2-dimensional array. For example, we have an array 2Darr.In the below example we have explained how to identify rows and columns by labeling “rows” and “columns”.

```
Column1    Column2   Column3
Row 0 ->    1         2        3
Row 1 ->    4         5        6
Row 2 ->    7         8        9
```

In this example, we have explained how to access rows and access columns in a 2D array. This is the pseudocode that we used in the below program.

```Accessing Rows
2Darr         :  Base address of 2Darr array.
*(2Darr + 0)  :  Base address of row 0 of 2Darr array.Or first element of row 0 address.
*(2Darr + 1)  :  Base address of row 1 of 2Darr array.Or first element of row 1 address.
*(2Darr + 2)  :  Base address of row 2 of 2Darr array.Or first element of row 2 address.

Accessing Columns
2Darr          :  Base address of 2Darr array.
(*2Darr + 0)   :  Base address of Column 0 of 2Darr array.Or first element of Column 0 address.
(*2Darr + 1)   :  Base address of Column 1 of 2Darr array.Or first element of Column 1 address.
(*2Darr + 2)   :  Base address of Column 2 of 2Darr array.Or first element of Column 2 address.

**2Darr                :  Value at index 2Darr of 2Darr array, means 1.
*(*(2Darr + 0) + 0)    :  Value at index 2Darr of 2Darr array, means 1.
*(*(2Darr + 0) + 1)    :  Value at index 2Darr of 2Darr array, means 2.
*(*(2Darr + 0) + 2)    :  Value at index 2Darr of 2Darr array, means 3.

*(*(2Darr + 1) + 0)    :  Value at index 2Darr of 2Darr array, means 4.
*(*(2Darr + 1) + 1)    :  Value at index 2Darr of 2Darr array, means 5.
*(*(2Darr + 1) + 2)    :  Value at index 2Darr of 2Darr array, means 6.

*(*(2Darr + 2) + 0)    :  Value at index 2Darr of 2Darr array, means 7.
*(*(2Darr + 2) + 1)    :  Value at index 2Darr of 2Darr array, means 8.
*(*(2Darr + 2) + 2)    :  Value at index 2Darr of 2Darr array, means 9.
```

### C program to access two dimensional array using pointer

In this example c program, we are accessing elements of the 2D array, to understand this code briefly use the above pseudocode.

```#include <stdio.h>

int main()
{
int TwoDarr;
int i, j;

printf("Please enter the elements of 3x3 2D array (9 elements):\n");

for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
scanf("%d", (*(TwoDarr + i) + j));
}
}

printf("The elements of 3x3 2D array are:\n");

for (i = 0; i < 3; i++)
{
printf("Row %d -> ",i);
for (j = 0; j < 3; j++)
{
printf("%d ", *(*(TwoDarr + i) + j));
}

printf("\n");
}
return 0;
}
```

Output

```Please enter the elements of 3x3 2D array (9 elements):
1
2
3
4
5
6
7
8
9
The elements of 3x3 2D array are:
Row 0 -> 1 2 3
Row 1 -> 4 5 6
Row 2 -> 7 8 9
```