# Addition and Subtraction of a Pointer (Pointer Arithmetics) in C

#### A pointer is an address, means it is a numerical value. Hence, arithmetic operation can be done on a pointer. There are four operations that can be done on a pointer. Those are:1. Increment (++) and Decrement (–)2. Addition of any integer to pointer (+)3. Subtraction of any integer from pointer (-)4. Subtracting two pointers of same datatype (-)In this lesson we will only learn about Addition and Subtraction method.It is inappropriate to add or substract a random integer to a pointer. The arithmetic operation on a pointer is applicable only when a pointer argument refers to an array. When a pointer arithmetic is being performed, the size of the value to add or substract depends upon the datatype of the reference array object the pointer is handling.The adding or substracting an integer is invalid because it may point to an element address which may not be available within that array. After the arithmetic operation on a pointer the result will also be a pointer if the operand is of integer type.Below, there is an example for adding some integer to an integer pointer.Example1

```/* C program to perform addition of pointer */
/* www.codewindow.in */

#include <stdio.h>

// Driver code
int main(){
int a=5;
int *ptr;	// Integer type pointer ptr
ptr=&a;		//Stores the address of 'a' integer type variable
printf("Before addition Address of the variable is %u", ptr);		// %u is to print unsigned integer
ptr=ptr+3;      // We add 3 to ptr

return 0;
}
```

#### Output

```Before addition Address of the variable is 3861401900
```

#### ExplanationIn the above example after adding 3 to the ptr pointer the address of ptr will be increased by 12 as for addition of 1 will increment the address by 4 bytes as it is handling a integer type variable of size 4 bytes in a 64 bit machine. So, 3*4=12 bytes will be added to the previous address.Now let us see an example of subtracting an integer from an integer pointerExample2

```/* C program to perform subtraction of pointer */
/* www.codewindow.in */

#include <stdio.h>

// Driver code
int main(){
int a=5;
int *ptr;	// Integer type pointer ptr
ptr=&a;		//Stores the address of 'a' integer type variable
printf("Before subtraction Address of the variable is %u", ptr);		// %u is to print unsigned integer
ptr=ptr-4;      // We add 3 to ptr

printf("\nAfter subtraction address of the variable is: %u", ptr);

return 0;
}
```

#### Output

```Before subtraction Address of the variable is 126788940
After subtraction address of the variable is: 126788924
```

You Missed

Also Checkout