如何通过类型的类型实际增加指针

时间:2014-10-31 15:40:33

标签: c++ pointers pointer-arithmetic

如何使指针按类型递增。 例如,如果我们有

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

我想知道这是如何在内部完成的。

1 个答案:

答案 0 :(得分:3)

编译代码的编译器知道指针的基本类型,并将代码适当地增加指针(偏移量)。例如:

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

第二行将是:

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

并且,相似:

p++;

意思是:

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

如果p的类型是其他类型(如float或某种结构),则计算将适当地执行。没有魔力。类型是定义的编译时间 - 一种变量在运行时不会改变,因此计算。