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

shi*_*zou -5 c void-pointers pointer-arithmetic

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

void * foo, **bar;
foo++;//error
bar++;//no error
Run Code Online (Sandbox Code Playgroud)

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

Sou*_*osh 8

第一个片段

 foo++;//error
Run Code Online (Sandbox Code Playgroud)

因为,foo是指针void,你不能有指针算术void *,void没有定义类型的大小.

第二个片段,

 bar++;//no error
Run Code Online (Sandbox Code Playgroud)

因为,bar是指向指针的指针void.因此,允许算术运算,因为指向指针类型的指针的大小已被很好地定义.

FWIW,如果有时候不要感到惊讶,无效指针算法"正常工作"而没有任何错误.