【问题标题】:Expression must be a pointer to a complete object type using simple pointer arithmetic [duplicate]表达式必须是使用简单指针算术的指向完整对象类型的指针[重复]
【发布时间】:2014-08-19 19:08:20
【问题描述】:

我正在尝试使用 void * 进行一些基本的指针运算。我的实际代码通过使用 sizeof 然后相乘来计算偏移量。以下是单独显示问题实例的示例代码。

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

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

错误是:

expression must be a pointer to a complete object type  

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

【问题讨论】:

标签: c


【解决方案1】:

指针算法总是根据指向对象的大小来计算。增加char* 将使地址增加1,而int* 通常为4(字节)。但是void 的大小未知,因此标准不允许对void* 进行指针运算。先转换成合适的类型;如果您只想像处理数字一样操作地址,请转换为char* 或使用intptr_t

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多