我正在翻阅我的教科书,对其中的一些代码感到有些困惑。在其中的一个部分,他们以以下方式进行指针运算:
但后来,他们做了以下事情:
我觉得它们应该是两个不同的东西,但他们却把它们当作同一件事来对待。 我这样感觉是因为,举个例子,如果你要访问一个数组(比如整数数组),你会这样做。
在这种情况下,我不是访问整数数组中的下一个字节,而是下一个4个字节,对吗? 同样地,如果我有一个
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个字节...
或者这不是这种情况吗?