void *和void **之间的区别**

时间:2015-07-08 19:04:08

标签: c void-pointers pointer-arithmetic

除了能够取消引用void**之外,我不理解以下内容:

void * foo, **bar;
foo++;//error
bar++;//no error

为什么不是第一次工作而第二次工作呢?有什么区别?

1 个答案:

答案 0 :(得分:8)

第一段摘录

 foo++;//error

因为foovoid的指针,你不能在void *上使用指针算术,void类型的大小没有定义。

第二段,

 bar++;//no error

因为,bar是指向指向void 的指针。因此,允许进行算术运算,因为指针类型指针的大小定义良好。

FWIW,有时候不会感到惊讶,void pointer arithmetic "works" without any error