- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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//……}
您可能关注的文档
最近下载
- Q/GDW 13239.1—2018 35kV电力电缆采购标准(第1部分:通用技术规范).pdf VIP
- 水电解质酸碱代谢失衡病人的护理失衡.ppt VIP
- Q∕GDW 13247.2-2018 35kV电力电缆附件采购标准 第二部分:专用技术规范(高清-可复制).pdf VIP
- 2024届高考英语一轮总复习选择性必修第二册Unit3FoodandCulture教师用书.doc VIP
- 医学检验生物安全培训课件.pptx VIP
- 高三化学教学反思15篇.pdf VIP
- 河南成人2024学位英语考试真题及答案.docx VIP
- 中药新药临床研究.pptx VIP
- 2024届高考英语一轮总复习选择性必修第二册Unit1ScienceandScientists教师用书.doc VIP
- 农田喷灌工程施工方案(3篇).docx VIP
文档评论(0)