为什么calloc指针类型是void*?

chu*_*han 0 c arrays pointers

我读了一本C书.但是无法理解句子

如果调用calloc成功,则返回指向内存中数组基类的void*类型的指针;

这里,如果指向类型为void*的指针指向内存中数组的基数,那么array [0]的类型为void?

我想知道什么是......

谢谢大家阅读我的问题,希望得到答复!

jfo*_*erg 5

我可以看到它是如何认为,因为int *指向int,然后void *应该指向void.但事实并非如此.之间确实没有任何有用的关系void *,void因此最好将它们视为单独的概念.

void *in C表示指向未指定类型的对象的指针.Object如果您熟悉Java,可以将其视为Java的C类似物.

void * 具有以下属性:

  • 任何指针类型都可以转换为和从中转换void *,即void *足够大以容纳任何指针,即使在指向不同类型的指针可以具有不同大小的机器上也是如此.

  • void *和其他指针类型之间的转换是隐式的,您不必进行显式转换.

  • 它不允许取消引用void *,即我们必须在访问它指向的内存之前将其强制转换为具体的指针类型.

  • 您不能void *在标准C中对a进行地址算术,尽管GCC允许您将其作为文档扩展名进行.

void *是需要处理任意数据的函数的选择类型,例如calloc().