免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 11049 | 回复: 49
打印 上一主题 下一主题

更改数组大小问题??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-19 22:42 |只看该作者 |倒序浏览
今天有人问了一个关于数组的问题

如果有一个 i 行 j 列的数组,现在要增加它的行数和列数,问要怎么实现

请问这个怎么实现,对数组的类型有区别吗

如果之前分配的数组中已经分配到了数据,要怎样改变大小

论坛徽章:
0
2 [报告]
发表于 2006-08-19 22:51 |只看该作者
malloc
realloc

论坛徽章:
0
3 [报告]
发表于 2006-08-19 23:09 |只看该作者
原帖由 默难 于 2006-8-19 22:51 发表
malloc
realloc



对于数组不能用realloc改变大小。数组编译器已经定好了大小

不过,基于另一种思想,可以用 malloc/realloc 分配空间,将多余数据存放这些地方,以达到增大数组的效果,我想:您是指这种方法吧! 使数组变小似乎没这个办法吧

论坛徽章:
0
4 [报告]
发表于 2006-08-19 23:16 |只看该作者
原帖由 mik 于 2006-8-19 23:09 发表



对于数组不能用realloc改变大小。数组编译器已经定好了大小

不过,基于另一种思想,可以用 malloc/realloc 分配空间,将多余数据存放这些地方,以达到增大数组的效果,我想:您是指这种方法吧! 使数组变 ...

没错啊,这种动态存储的东西一般都是在堆上做得。
缩小空间用realloc也可以

论坛徽章:
0
5 [报告]
发表于 2006-08-19 23:17 |只看该作者
原帖由 默难 于 2006-8-19 23:16 发表

没错啊,这种动态存储的东西一般都是在堆上做得。
缩小空间用realloc也可以


LZ 所说的是数组,数组是静态的!

论坛徽章:
0
6 [报告]
发表于 2006-08-19 23:19 |只看该作者
原帖由 mik 于 2006-8-19 23:17 发表


LZ 所说的是数组,数组是静态的!

……
我之所以回复malloc realloc,就是为了告诉LZ,用动态分配。我这手头有事情做,懒得说那么多话了。难道还要我把堆栈在解释一遍吗?

论坛徽章:
0
7 [报告]
发表于 2006-08-19 23:24 |只看该作者
原帖由 默难 于 2006-8-19 23:19 发表

……
我之所以回复malloc realloc,就是为了告诉LZ,用动态分配。我这手头有事情做,懒得说那么多话了。难道还要我把堆栈在解释一遍吗?


晕,大概我是误解了你的用意,你也误解了我想表达的意思, 是我不对在先

这个堆栈嘛,就不用劳烦你解释了。

论坛徽章:
0
8 [报告]
发表于 2006-08-19 23:45 |只看该作者
原帖由 mik 于 2006-8-19 23:24 发表


晕,大概我是误解了你的用意,你也误解了我想表达的意思, 是我不对在先

这个堆栈嘛,就不用劳烦你解释了。

技术板块,没什么对不对的。

论坛徽章:
0
9 [报告]
发表于 2006-08-19 23:47 |只看该作者
确实会遇到两种情况,静态分配和动态分配,请问静态分配的数组是不是就没有办法再更改大小了?

那malloc realloc 可以同时更改动态分配数组的行和列值吗,并保留原有的数据

论坛徽章:
0
10 [报告]
发表于 2006-08-20 00:00 |只看该作者
如果要在栈上申请一个指定大小的空间,可以用alloca
不过这个函数不在标准C函数库里面
如果系统没有实现这个函数,可以利用内嵌的汇编来修改%esp和%eax的值来实现这个函数。不过修改%esp %eax的方法只适用于x86

malloc是用于申请一片连续的内存
所谓行和列……LZ还是再看一遍多维数组方面的内容吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP