1. 1、本文档共100页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_指针

7.7  动态存储分配 对数组的分配: int *q =new int[7]; p 2 q *p=2; int *p= new int; int *p= new int(2); 同时指定初值2 用new运算符分配的存储空间,系统不能自动释放。如果不再使用该空间时,要显式释放它所占用的存储空间,否则,该空间会一直保留。 释放存储空间的运算符是delete,其使用的格式为: delete 地址指针 —— 释放动态分配的内存空间 delete[ ]地址指针 —— 释放动态分配的一维数组空间 delete[ 表达式]地址指针 —— 释放动态分配的一维数组空间 例:动态内存空间分配。 #include iostream.h void main(void) { int *p1; float *p0, (*p)[10]; // p是指向一维数组的指针 char *cp1; p1 = new int(25); cp1 = new char; *cp1 = A; p0 = new float[10]; p= (float (*)[10] )new float[10]; //强制类型转换 for (int i=0; i10; i++) p0[i] = i; for (i=0; i10; i++) (*p)[i] = i; for (i =0; i 10; i++){ cout (*p)[ i]= (*p)[i]\t; if ( (i+1)%5 == 0 ) cout \n; } delete p1; delete cp1; delete p0; delete [] p; // [ ]省略时会给出编译警告 } 注意: 分配空间后需判断动态分配内存是否成功; int *p= new int; if (p==0) {…} 不能在为数组和结构体分配空间时进行初始化; int *p= new int[3](1, 2, 3) ? new 计算的指针类型与赋值运算符左操作数类型要一致,否则必须强制类型转换; float (*p)[10]; p=(float(*)[10])new float[10]; p=new float[5][10]; 动态分配的空间是不会自动归还系统的,所以要注意不要丢失空间。 int *p= new int(2); p= new int [6]; //前面分配的空间丢失。 例7.17 根据学生人数动态分配存储空间,计算学生的平均成绩。 void main(void) { int *p; int n; double s=0; cout请输入学生的人数: ; cinn; p=new int[n]; //根据n的数目动态分配存储空间,空间的首地址为p if(p==NULL) //判断分配是否成功 { cout动态存储分配失败,程序终止运行; exit(1); } for(int i=0; in;i++) { cout请输入第i+1个学生的成绩: ; cinp[i]; //向已分配的空间输入数据 s=s+p[i]; } cout学生的平均成绩是: s/nendl; delete []p; //释放动态分配的存储空间 } 程序运行情况和结果如下: 请输入学生的人数: 3↙ 请输入第1个学生的成绩: 80↙ 请输入第2个学生的成绩: 90↙ 请输入第3个学生的成绩: 70↙ 学生的平均成绩是: 80 7.5.1 二维数组的地址 a[0]为一维数组名,其数组有四个int型的元素: a[0][0],a[0][1],a[0][2],a[0][3] 同样,它代表一维数组的首地址,所以,a[0]为a[0][0]。 a[0]为a[0][0] a[0][0]=*(a[0]+0) a[0] = *(b+0) a[0]+1为a[0][1] a[0][1]=*(a[0]+1) a[1] = *(b+1) a[0]+2为a[0][2] a[0][2]=*(a[0]+2) a[2] = *(b+2) a[0]+3为a[0][3] a[0][3]=*(a[0]+3) a[3] =

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档