Each element of the array occupies 4 bytes of space in memory.
Therefore, the calculation can be done as follows:
- Bytes between pointers =
char_type_cast of (pointer2 - pointer1)
- Pointer-sized spaces =
(bytes_between_pointers / 4)
- Integer-sized spaces =
int_type_cast of (pointer2 - pointer1)
Working code:
#include<stdio.h>
int main()
{
int arr[] = {10, 20, 30, 40, 50, 60};
int *ptr1 = arr;
int *ptr2 = arr + 5;
/*
1 pointer = 4 bytes
Byte-sized spaces = char_type_cast of (ptr2 - ptr1)
Pointer-sized spaces = byte_spaces / 4
Integer-sized spaces = int_type_cast of (ptr2 - ptr1)
*/
int byteSpaces = ((char*)ptr2 - (char*)ptr1);
int pointerSpaces = (byteSpaces / 4);
int integerSpaces = ((int*)ptr2 - (int*)ptr1);
printf("Pointer 1 = %d\n", *ptr1);
printf("Pointer 2 = %d\n", *ptr2);
printf("\nByte sized spaces between two pointers = %d\n", byteSpaces);
printf("\nPointer sized spaces between pointers = %d\n", pointerSpaces);
printf("\nInteger sized spaces between pointers = %d\n", integerSpaces);
return 0;
}
Output:
Pointer 1 = 10
Pointer 2 = 60
Byte sized spaces between two pointers = 20
Pointer sized spaces between pointers = 5
Integer sized spaces between pointers = 5