| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2966 人关注过本帖
标题:关于malloc和realloc的疑惑
取消只看楼主 加入收藏
刮目相看
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-11-23
结帖率:50%
收藏
 问题点数:0 回复次数:1 
关于malloc和realloc的疑惑
假如定义静态数组:int arr[3]={1,2,3};
因为是以整形数组形式定义,所以当打印*(a+0)...等值时,系统知道每次要一定移动sizeof(int)个字节数,切每个值的地址是相邻的。

但是如果这样定义:
int *a=(int *a)malloc(sizeof(int));
*a=1;
a=(int *)realloc(a,2*sizeof(int));
*(a+1)=2;
a=(int *)realloc(a,3*sizeof(int));
*(a+2)=3;

之后如果想要打印*a,*(a+1),*(a+2)也可以打印出来。
但是,又malloc类函数分配的内存不是不一定连续么?

为什么还可以用数组的形式去取之中的值呢?就是*a,*(a+1),*(a+2),这样表示,不是说明这三值的地址是连续的么?

疑惑中
搜索更多相关主题的帖子: malloc realloc 
2010-03-11 06:18
刮目相看
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-11-23
收藏
得分:0 
楼上2位朋友说的这些我懂。
但是如果是连续的内存空间,那为什么还要用链表?用指向下一个node的指针去找到下一个,如果确定是连续了,那不就直接用数组的形式去遍历每一个元素了?
2010-03-11 14:10
快速回复:关于malloc和realloc的疑惑
数据加载中...
 
   



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

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