1

How are pointers made to increment by their type. For example if we have

int *ptr;       
ptr++;   //would point to the next integer i.e. it would increment ptr by 4bytes in 32 bit system

I wanted to know that how is this done internally.

Ajay
  • 18,086
  • 12
  • 59
  • 105
Harsh M. Shah
  • 613
  • 1
  • 6
  • 6

1 Answers1

3

The compiler compiling the code knows the base type of the pointer, and it puts the code to increment pointer (offset) appropriately. For example:

int* p = new int[10];
*(p+2) = 100;

The second line will be like:

p + sizeof(int) * 2 ... // Not C/C++

And, similary:

p++;

Would mean:

p = p + sizeof(int); // Not C/C++

If type of p is something else (like float or some structure), the calculations would be performed appropriately. There is no magic. Types are compile time defined - a type of variable don't change at runtime, hence the calculations.

Ajay
  • 18,086
  • 12
  • 59
  • 105