搜索

如何用c语言分配动态空间

gecimao 发表于 2019-08-13 20:52 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  如果我不知道n有多大呢。。比如做一个通讯录,不知道我以后究竟会输入多少个人的电话

  用链表,每次先使用一个temp结点记录一个用户输入,再将该节点链入表尾追问能说说怎么用吗?给个程序片段看一下可以吗?追答给你一个完整一些的,简单改一改就行了:

  展开全部*p=(int *)malloc(sizeof(int )*n);追问如果我不知道n有多大呢。。比如做一个通讯录,不知道我以后究竟会输入多少个人的电话追答(1)建议使用链表,每次申请一个空间,

  展开全部stdlib.h 中的malloc 库函数,可以创建动态空间追问我知道用malloc,能不能把定义的那条语句写出来。。。。我是知道但是不会用,就是程序要用时不会写追答从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:

  而 malloc 则必须由我们计算要字节数,并且在返回后强行转换为实际类型的指针。

  第一、malloc 函数返回的是 void * 类型。对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,建议养成强制转换的习惯。

  第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。如果你写成:

  代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容被改写。

  malloc 也可以达到 new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。

  另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。

  除了分配及最后释放的方法不一样以外,通过malloc或new得到指针,在其它操作上保持一致。

本文链接:http://hem-larm.com/dongtaicunchufenpei/1192.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部