我正在尝试用void*做一些基本的指针算法.我的实际代码通过使用sizeof然后乘法来计算偏移量.下面是示例代码,用于显示问题的实例.
void * p;
p = 0;
p = p + 1;
Run Code Online (Sandbox Code Playgroud)
我在C(而不是C++)中使用MSVC编译器.
错误是:
expression must be a pointer to a complete object type
Run Code Online (Sandbox Code Playgroud)
我不明白这个错误试图说的是什么.这里没有对象或结构.
Joh*_*nck 13
指针算术总是根据指向对象的大小来确定.递增a char*将使地址前进一,而int*通常为四(字节).但是void具有未知的大小,因此void*标准不允许指针算术运行.首先投射到合适的类型; 如果您只是想操纵地址,就好像它是一个数字然后转换为char*或使用intptr_t.
| 归档时间: |
|
| 查看次数: |
29161 次 |
| 最近记录: |