除了能够取消引用void**
之外,我不理解以下内容:
void * foo, **bar;
foo++;//error
bar++;//no error
为什么不是第一次工作而第二次工作呢?有什么区别?
答案 0 :(得分:8)
第一段摘录
foo++;//error
因为foo
是void
的指针,你不能在void *
上使用指针算术,void
类型的大小没有定义。
第二段,
bar++;//no error
因为,bar
是指向指向void
的指针。因此,允许进行算术运算,因为指针类型指针的大小定义良好。
FWIW,有时候不会感到惊讶,void pointer arithmetic "works" without any error。