# 1. Introduction

Two-dimensional arrays in C are essentially an array of arrays. Using pointers to navigate and manipulate them can sometimes be tricky due to the way they are stored in memory. This guide will demonstrate how to access elements of a two-dimensional array using pointers.

# 2. Program Overview

1. Declare a two-dimensional array.

2. Use pointers to traverse this array.

3. Print elements of the array using pointer notation.

# 3. Code Program

``````#include <stdio.h>

int main() {
int arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int i, j;

// Printing elements of 2D array using pointers
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", *(*(arr + i) + j));
}
printf("\n");
}

return 0;
}
``````

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

# 4. Step By Step Explanation

1. A two-dimensional array arr of size 3x3 is initialized with numbers 1 through 9.

2. Nested for-loops are used to traverse through the rows (i) and columns (j) of the array.

3. To access an element using pointers, the notation *(*(arr + i) + j) is used:

- (arr + i) gives the address of the ith row (which is essentially a pointer to the row).

- *(arr + i) is the address of the first element of the ith row.

- Adding j to it (*(arr + i) + j) gives the address of the jth column of the ith row.

- Dereferencing it with * gives the value at that address.

4. The value is printed using the printf function.

5. This results in the entire 2D array being printed row by row.