我试图用void *做一些基本的指针运算。我的实际代码通过使用sizeof然后乘法来计算偏移量。以下是自行显示问题实例的示例代码。
void * p;
p = 0;
p = p + 1;
我在C(不是C ++)中使用MSVC编译器。
错误是:
expression must be a pointer to a complete object type
我不明白这个错误试图说的是什么。这里没有对象或结构。
答案 0 :(得分:8)
指针算术总是根据指向对象的大小而定。递增char*
会使地址前进一,而int*
则通常为四(字节)。但void
的大小未知,因此标准不允许void*
上的指针算术。首先投射到合适的类型;如果您只想操纵地址,就好像它是一个数字,然后转换为char*
或使用intptr_t
。