Pointer arithmetic is very important to understand, if you want to have complete knowledge of pointer. In this topic we will study how the memory addresses change when you increment a pointer.
16 bit Machine ( Turbo C )
In a 16 bit machine, size of all types of pointer, be it int*, float*, char* or double* is always 2 bytes. But when we perform any arithmetic function like increment on a pointer, changes occur as per the size of their primitive data type.
Size of datatypes on 16-bit Machine :
int or signed int | 2 |
char | 1 |
long | 4 |
float | 4 |
double | 8 |
long double | 10 |
Examples for Pointer Arithmetic
Now lets take a few examples and understand this more clearly.
int* i; i++;
In the above case, pointer will be of 2 bytes. And when we increment it, it will increment by 2 bytes because intis also of 2 bytes.
float* i; i++;
In this case, size of pointer is still 2 bytes. But now, when we increment it, it will increment by 4 bytes becausefloat is of 4 bytes.
double* i; i++;
Similarly, in this case, size of pointer is still 2 bytes. But now, when we increment it, it will increment by 8 bytes because its data type is double.
32 bit Machine ( Visual Basic C++ )
The concept of pointer arithmetic remains exact same, but the size of pointer and various datatypes is different in a 32 bit machine. Pointer in 32 bit machine is of 4 bytes.
And, following is a table for Size of datatypes on 32-bit Machine :
int or signed int | 4 |
char | 2 |
long | 8 |
float | 8 |
double | 16 |