C语言中malloc函数的理解

在C语言中malloc函数主要是用在堆内存的申请上,使用malloc函数时,函数会返回一个void *类型的值,这个值就是你申请的堆内存的首地址;为什么返回的地址是一个void *类型的地址呢?首先我们要先弄明白,到底void是一个什么类型呢?很多C语言的初学者认为,void类型就是空类型,就是没有类型,但是实际上这种认知是扯淡的。因为空白的意思是可以容纳百物(讲C语言突然讲出了道家的思想,自己这么流弊的吗?哈哈哈哈哈嗝),既然可以容纳百物,也就是void型其实就是万能型,它可以指代任意类型。其次,还有一个疑问就是malloc函数作为一个申请堆内存的函数,为什么需要返回一个void *型的地址呢?这是由于,malloc函数是一个通用型函数,我们无论申请什么类型(int、float、char......)都是使用malloc函数去申请的,malloc函数也不能智能地识别到我们想要申请什么类型的内存,所以就干脆来个一刀切,全部都给你返回一个void *型的地址,到时候你需要使用你自己申请的地址的时候,就强制类型转换一下,就可以使用了。如:int *p = (int *)malloc(1000*sizeof(int));就是申请了1000个int类型(4000字节)的空间,将返回的void *类型地址强制转换成int *类型,然后在将该地址赋值到int * 类型的指针变量p中。还需要注意一点:C语言中的所有数值必须是有类型的,void类型也是一种类型,所以malloc函数要返回堆内存的首地址,就必须把首地址赋值成万能类型void;而不是没有类型。

上一篇:python Redis


下一篇:C语言中fgetc函数返回值为什么是int?