# Array and Pointers

An array is a collection of variables of the same datatype.

In C language, array and pointers are more or less same.

#### Example

```int arr[5]={10,20,30,40,50};
```

where,

arr will point the first element in the array which is 10.

Hence, arr will have the address of arr[0] (&arr[0]).

arr is exactly as same as &arr[0]. arr == &arr[0]

## arr+i

Assume that the first element address as 1024. So, arr will point the memory address 1024.

#### What will happen if we move arr by 1 position? i.e. arr+1?

It will not add 1 to 1024 instead it will move 4 bytes of memory as the size of an integer is 4 bytes.

So, arr + 1 will be 1028.

arr + 1 will point the second element of an array.

Example

```#include<stdio.h>

int main()
{
int arr[5] = {10, 20, 30, 40, 50}, i;

for(i = 0; i < 5; i++)

return 0;
}
```

%p format specifier is used to printing the pointer address.

## arr[i] == *(arr+i)

arr[i] is exactly same as *(arr+i) (value stored at the address arr+i).

arr[i] will give the value stored at the memory address arr + i.

## Printing elements in the array

Example

```#include<stdio.h>

int main()
{
int arr[5] = {10, 20, 30, 40, 50}, i;

for(i = 0; i < 5; i++)
printf("value stored in arr[%d] = %d\n",i,*(arr+i));

return 0;
}
```