下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 关于数组动态分配空间问题

关于数组动态分配空间问题.doc

关于数组动态分配空间问题

妖瞳宿
2017-09-19 0人阅读 举报 0 0 暂无简介

简介:本文档为《关于数组动态分配空间问题doc》,可适用于综合领域

问题还是出在对指针的操作和对calloc realloc分配空间函数的理解上!具体程序中的红色部分#include<iostreamh>#include<stdlibh>intmain(){  int*n,*head,*p 定义了一个新的指针用于记录重新分配空间时得到的连续空间的首地址因为重新分配时首先是在原连续空间上进行扩展如果后面的连续空间足够则新分配的连续空间的地址与原来的地址是一样的。但是更可能的是:扩展时后面的连续空间不够那么就需要重新找一块足够大的连续空间分配(同时把原来小的连续空间释放)因此必须有一个新指针来记录重新分配的地址以避免与原来的地址冲突造成指针操作错误。  inti,j,temp  intk=记录当前数组长度  intMAX=设置数组个数  n=(int*)calloc(MAX,sizeof(int))创建动态数组  head=n记录不用增加动态数组长度时的头指针  cin>>i输入数组元素的值  while(i!=k<MAX)  {    *n=i给当前数组元素赋值    k数组长度加一    cin>>i输入下一个数组元素的值    if(k==MAX)数组已满    {     MAX=MAX重设数组长度     p=(int*)realloc(head,(MAX)*sizeof(int))增加数组长度(调试时到这一句就中断)。这里把n修改为head是因为你使用的n已经通过n移动了不是原来空间的首地址了。P记录新分配的更大连续空间的首地址     head=p记录新动态数组头指针head总是记录数组连续空间的首地址     n=head(MAX)返回已赋好值的那个节点n记录着原来已经读入进来的数组元素这个位置都是以head为相对位置的。    }    n数组元素下移一位  }  下面操作语句完全可以不要因为数组占用的连续空间的首地址在head中  n=把最后多下移一位的值悬空   n=head  返回头指针这个操作应该是让n指向数组的开始为了下面排序做准备  下面的程序正确数组不需要增加长度时就正确一增加就错误  for(i=i<ki)  {    for(j=ij<kj)    {      if(*n>*(n))      {        temp=*n        *n=*(n)        *(n)=temp      }      n    }    n=head  }  n=head  for(i=i<ki)  {    cout<<*n<<"t"    n  }  n=head  free(n)  return}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/2

关于数组动态分配空间问题

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利