| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1003 人关注过本帖
标题:想要动态分配内存,但又不知道数据上限,该怎么办
只看楼主 加入收藏
wqq4323
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-24
收藏
得分:0 
回复 10 楼 TonyDeng
谢谢了。。。但是有一个问题,我要用gets()函数获取输入值,但是获取的时候要求指定一个地址存数据,此时我还没有申请动态内存,那么数据存到哪里。。另外开辟一片内存么?但是要开辟多大。。。就是觉得有点矛盾。。。谢谢版主了
2014-06-25 11:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
int n;                                                // 数组的尺寸变量
scanf("%d", &n);                                      // 运行请求用户输入数组的大小
char* str = (char*) malloc(n * sizeof(char));         // 根据上面的输入值申请内存
gets(str);                                            // 要求用户输入内容,数据就存放在刚才申请的空间中
……                                                  // 后续的代码
free(str);                                            // 用完后记得释放动态申请的空间!

授人以渔,不授人以鱼。
2014-06-25 11:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
所有动态(malloc())申请的空间,一经申请成功,即无法再行更改(变更大小的库函数是另外申请空间后把原内容复制过去的,不是自身伸缩),所以这实际上不叫动态分配,准确的称呼是运行时分配。目前效率和易用性兼顾最好的动态伸缩方案是C++的vector类实现,不是C的链表,在能够用C++类的编译器上编程,哪怕是写C程序,都应尽量使用vector,不要死守C的语法和特性。

授人以渔,不授人以鱼。
2014-06-25 11:36
wqq4323
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-6-24
收藏
得分:0 
回复 13 楼 TonyDeng
脑洞大开,谢谢
2014-06-25 16:21
快速回复:想要动态分配内存,但又不知道数据上限,该怎么办
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014775 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved