p=(int*)malloc(sizeof int(int)*nSIZE);是怎么隐式转换的

array=(int*)malloc(arraysize*sizeof(int));
[问题点数:0分]
array=(int*)malloc(arraysize*sizeof(int));
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
本帖子已过去太久远了,不再提供回复功能。(int *)malloc(sizeof(int)) 里面的(int *)是什么意思_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:333,192贴子:
(int *)malloc(sizeof(int)) 里面的(int *)是什么意思收藏
有人说是强制类型转换,因为malloc分配的是一个空指针,可是为什么要加一个*号,就算是强制类型转换,指针变量不都是指向的内存地址吗,为什么不可以直接赋值,不同类型的指针变量内部究竟是什么不同?有人说是强制声明而已,声明一个指向分配了4个字节的内存地址的指针我有本书上用了(int *),有本书没有用到底是个什么东西。。求解
就是强制转换成int*啊..malloc返回的是void*
malloc返回的是一个指向申请空间的指针
char *int *double *等等。。。。。。。。。。。。。
(int *)malloc(sizeof(int))
sizeof(int)=4 int占4个字节(int *)malloc(sizeof(int *)) sizeof(int *)=4 指针占4个字节(char *)malloc(sizeof(char)) sizeof(char)=1 char占1个字节(char *)malloc(sizeof(char *)) sizeof(char *)=4
指针占4个字节如果前面有声明char *malloc();那么malloc(sizeof(char))/malloc(sizeof(char *))等同于上面后2个至于为什么要加 char * 这取决于malloc的左值,因为malloc的左值是被声明为指向不同类型的指针,不同类型的指针之间是不能赋值的,所以需要char * 进行强制类型转换
malloc申请的内存都是空类型 也就是 void *
但是,这个内存取决于你怎么去使用,所以,将其转换为相应的类型是必要的啊!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或专接本计算机C语言程序设计模拟试题及答案(一)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
专接本计算机C语言程序设计模拟试题及答案(一)
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢*H=(Linklist )malloc(sizeof(Node));怎么往懂读啊_百度知道
*H=(Linklist )malloc(sizeof(Node));怎么往懂读啊
提问者采纳
为了更好的说明这个问题,先说几个概念:===================================================================函数说明原型:extern void *malloc(unsigned int num_bytes);
头文件:在TC2.0中可以用malloc.h或 alloc.h ,而在Visual C++6.0中可以用malloc.h或者stdlib.h。
功能:分配长度为num_bytes字节的内存块
返回值:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
说明:关于该函数的原型,在旧的版本中malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
名称解释:malloc的全称是memory allocation,中文叫动态内存分配。 ======================================================================举例说明:比如想分配100个int类型的空间:
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。
另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。=====================================================================函数工作机制:malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。如果无法获得符合要求的内存块,malloc函数会返回NULL指针,因此在调用malloc动态申请内存块时,一定要进行返回值的判断。=======================================================================来源:
提问者评价
其他类似问题
为您推荐:
sizeof的相关知识
其他2条回答
sizeof是标准c语言关键字, 返回一个类型的所占的内存字节长度。malloc是标准C提供的一个库函数,传入一个整形参数,表示申请多大一个内存空间函数返回分配到的内存的指针最后把指针抢转为LinkList类型赋值给H总的来说就是分配链表的一个节点的空间
H前面为什么要加一个“*”
malloc(size(node))是在内存中分配sizeof(node)的大小的内存空间,这里的linklist是什么不了解,但是我觉得可能是一种将刚刚所分配的空间地址指针强制转化位linklist类型的吧,再用H存放转化后的指针
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言数据结构中P=(int*)malloc(8*sizeof(int))我知道他的意思是开辟8个_百度知道
C语言数据结构中P=(int*)malloc(8*sizeof(int))我知道他的意思是开辟8个
C语言数据结构中P=(int*)malloc(8*sizeof(int))我知道他的意思是开辟8个int大小的内存空间 我不懂&int大小的内存空间&是什么意思 int怎么能有大小
提问者采纳
在C语言中 int类型是占4个字节的,至于malloc的确是开辟了8个int字节大小的空间。因为任何运行都是需要内存的,比如大脑,是需要内存条的。int大小的内存空间:就是是内存中开辟了4个字节的大小,各种数据类型是占有空间的。当然还有其它类型,如char ,会在内存中开辟一个字节的大小。 多看看C语言基础知识,希望可以帮助以你。
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
sizeof的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 sizeof int 的文章

 

随机推荐