码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中malloc函数的理解

时间:2018-09-28 16:38:07      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:eof   oat   没有   种类   内存   扯淡   疑问   指针   哈哈   

在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;而不是没有类型。

C语言中malloc函数的理解

标签:eof   oat   没有   种类   内存   扯淡   疑问   指针   哈哈   

原文地址:https://www.cnblogs.com/xing-ting/p/9718782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!