表达式必须是使用简单指针算法指向完整对象类型的指针

时间:2014-06-29 02:46:46

标签: c

我试图用void *做一些基本的指针运算。我的实际代码通过使用sizeof然后乘法来计算偏移量。以下是自行显示问题实例的示例代码。

void * p;
p = 0;
p = p + 1;

我在C(不是C ++)中使用MSVC编译器。

错误是:

expression must be a pointer to a complete object type  

我不明白这个错误试图说的是什么。这里没有对象或结构。

1 个答案:

答案 0 :(得分:8)

指针算术总是根据指向对象的大小而定。递增char*会使地址前进一,而int*则通常为四(字节)。但void的大小未知,因此标准不允许void*上的指针算术。首先投射到合适的类型;如果您只想操纵地址,就好像它是一个数字,然后转换为char*或使用intptr_t