除了能够取消引用 void**
之外,我不明白以下内容:
void * foo, **bar;
foo++;//error
bar++;//no error
为什么第一个不起作用但第二个却起作用?有什么区别?
最佳答案
第一个片段
foo++;//error
因为,foo
是指向void
的指针,并且您不能对void *
进行指针算术,即void
的大小code> 类型未定义。
第二个片段
bar++;//no error
因为,bar
是一个指向指向void
的指针。因此,算术运算是允许的,因为指向指针类型的指针的大小已明确定义。
FWIW,有时不要感到惊讶,void pointer arithmetic "works" without any error .
关于c - void * 和 void ** 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301515/