我正在浏览我的教科书,我对其中的一些代码有点困惑。一方面,他们以下列方式执行指针运算:
void* bp;
...
bp = (void*)((char*)(bp)+16);
...
但后来,他们执行以下操作:
void* bp;
...
bp = bp+16;
...
我觉得他们应该是两个不同的东西,但他们把它当作同一个东西对待。我有这种感觉是因为,例如,如果您要进行数组访问(例如,对于整数数组),您将执行以下操作
int* a = malloc(n*sizeof(int));
...
q = *(a+1);
...
在这种情况下,我不是访问整数数组中的下一个 4 个字节而不是下一个字节吗?同样,我觉得如果我有 void* a,那么 *(a+1) 应该是接下来的 4 个字节......或者不是这样吗?谢谢你。