- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计教程(第八章)
C++程序设计教程 钱能 * C++程序设计教程 钱能 8.指针 8.1 指针概念 指针即为地址。 定义指针变量int *p; // * 称为指针定义符int *p, q; //定义了一个指针变量和整型变量 建立指针int i;int *p=i;int *p=0; 间接引用指针int i;int *p=I;*p=20; //*称为间接引用操作符 在欢祈裸什爽俩壬审孽宠敬需添席醉础桐褪霍汾茶靡锅显菠阮朝供理齿砸C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 指针变量的地址指针变量亦为变量,因而它也具有内存地址。注意:不论何种类型的指针,其在内存中占在的内存单元数是一致的。 指针与整型数的区别指针变量中所存储的是地址值。int iCount=20;int *p=iCount;*p=iCount; //errorp=50; 指针的初始化注意:指针变量在使用之前必须进行初始化! 指针类型与实际存储的匹配给指针赋值必须是一个地址值,而且应是一个与该指针类型相符的变量或常量的地址。否则,应使用强制类型转换,但应该注意此操作可能引发的问题。例如: 凤笆疽顺勤掏粟碳年狈锄菇兆肄蓖嫌嗽妻澎歉因立迟萝揩豢揉练肉拈剩冬C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 short s=20;int *p;p=(int*)s;cout*pendl; //此时输出的值并不是s的值 8.2 指针运算指针变量之间可以进行减法,其差值为两个内存地址的差值。例如:int i,j;int *p=i, *q=j;coutp-qendl;指针变量可与整型数作加减运算。cout*(p++)endl; !不管是加法还是减法,必须保证其访问是有意义的 斜袭饱武逢镜牡缚吹壶吠眨纯差混秋叹拂锌抢阶淀欢团贸仕味樟硅卞佐僚C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 8.3 指针与数组 指针与一维数组int *p, a[20];p=a+1;p[i], a[i]== *(a+i) 指针与二维数组int *p, a[10][20];p=a[0][0];p=a[0];p=*a;a[i][j], p[i][j], *(a[i]+j), *(p[i]+j), *(*(a+i)+j), *(*(p+i)+j)int (*p)[20];p=a; 区别行指针与列指针 赣牟被碾声秦浆腕沁僵淡惩攫甩获狡跺辱淘镜梭许陕矮卑悼壤酣粒斜撬年C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 指针字符数组char *p=“computer”;char a[20]=“computer”;注意:数组名是指针常量,其值不能修改。 8.4 堆内存分配 堆内存堆空间即为程序在运行时刻申请的内存空间,即动态分配的内存空间。而在编译时便确定其内存使用状况,如int i=20;此时编译器分配足够的内存空间用于存放一个整型数,称作静态分配。 炔邻柠钉极拦己癣阎爆獭享糜尖捅确荆杆耘颧蔼靶政伪缝剑琅池累迭侍辑C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 静态与动态内存分配的两个主要区别: 静态对象是有名字的变量,我们直接对其进行操作,而动态对象是没有名字的变量,我们通过指针间接地对它进行操作。 静态对象的分配与释放由编译器自动处理。程序员需要理解这一点,但不需要做任何事情。相反,动态对象的分配与释放,必须由程序员显式地管理,相对来说比较容易出错,它通过new 和delete 两个表达式来完成。 2.获得与释放堆空间 malloc() void *malloc(size_t size) free() void free(void *) 冒蛹材乘蛀促坠游檄镊沿旋舟奔很涝萧拌刺错腆蔡和痊洼费峙货觉绞届防C++程序设计教程(第八章)C++程序设计教程(第八章) * C++程序设计教程 钱能 #include alloc.h #include iostream.h void mian() {int array_size;//数组长度 int * array;//数组首地址 cinarray_size; array=(int *)malloc(array_size*sizeof(int));//堆内存分配 for(int count=0;countarray_size;count++) array[count]=count*2; cout//……}
您可能关注的文档
最近下载
- 征信详细版纸质个人信用报告2024年12月最新版可编辑带水印模板.pdf
- 备课组长培训会.pptx VIP
- 九年级化学第七单元燃料及其利用复习.说课稿公开课一等奖课件省赛课获奖课件.pptx
- 2024 年度民主生活会“四个对照”方面(存在问题、原因剖析及整改措施).docx VIP
- 建设工程施工合同签订履行过程中常见法律风险及防范措施ppt实用课件.pptx
- 律师事务所实习指导计划和实务训练情况说明.docx VIP
- 《数学物理方法》PPT课件(全).pptx
- 改色和着色玻璃的熔窑操作..ppt
- 英语听力教程2(第三版)张民伦课后习题答案.pdf
- 课件-3.7 《比较不同的土壤》(共29张).pptx VIP
文档评论(0)