教科書に目を通していますが、そこにあるコードのいくつかについて少し混乱しています。ある部分では、次の方法でポインター演算を実行しています。
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 バイトである必要があると感じています... それともそうではないのでしょうか? ありがとうございました。