如何使指针按类型递增。 例如,如果我们有
int *ptr;
ptr++; //would point to the next integer i.e. it would increment ptr by 4bytes in 32 bit system
我想知道这是如何在内部完成的。
答案 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
或某种结构),则计算将适当地执行。没有魔力。类型是定义的编译时间 - 一种变量在运行时不会改变,因此计算。