Why Subtraction is allowed? Two addresses can be subtracted because the memory between the two addresses will be valid memory.
Let’s assume memory Ptr_1 and ptr_2 valid addresses. It is obvious that memory between these two addresses is valid.
Pointer ptr_1 is pointing to 0x1cb0010 memory location and ptr_2 is pointing to 0x1cb0030 memory location. If we subract ptr_1 from ptr_2, then the Memory region will lie in between these two location which is obviously a valid memory location.
Output: ptr_1: 0x1cb0010 ptr_2: 0x1cb0030 Difference: 8
Why addition, Multiplication, division or modulus is not allowed??
If we perform addition, multiplication, division or modulus on ptr_1 and ptr_2, then the resultant address may or may not be a valid address. That can be out of range or invalid address. This is the reason compiler doesn’t allow these operations on valid addresses.
Output: prog.c: In function 'main': prog.c:8:60: error: invalid operands to binary + (have 'int *' and 'int *') printf("addition:%lu multipicaion:%lu division:%lu\n", ptr_2+ptr_1, ptr_2*ptr_1, ptr_2/ptr_1);
- How to find size of array in C/C++ without using sizeof ?
- C++ | Nested Ternary Operator
- Working of Keyword long in C programming
- Code valid in both C and C++ but produce different output
- Different ways to Initialize all members of an array to the same value in C
- Why does sizeof(x++) not increment x in C?
- C program to find the length of a string
- C Program to Multiply two Floating Point Numbers
- C Program to Compute Quotient and Remainder
- C program to Find the Largest Number Among Three Numbers
- C program to find the size of int, float, double and char
- C program to Check Whether a Number is Positive or Negative or Zero
- Inter-process Communication using a shared stack
- strlwr() function in C
- strrev() function in C
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.