- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.指针的初始化与赋值 定义了一个指针,只是得到了一个用于存储地址的指针变量。若指针变量既没有初始化,也没有赋值,其地址值是一个随机的数。 (1)不要将一个非地址常量、变量以及无意义的实际地址赋给指针变量。如: int *p=100; //错误,100是一个int型常量,不是一个地址常量。 int *p=(char *)100; //危险!100是一个无意义的实际地址, 可能指向危险区域。 (2)可以使用一个已初始化的指针去给另一个指针赋值,但类型必须一致如果不一致,可进行强制类型转换。 char *p=NULL; int *ip=(int *)p+100; //将char型指针强制转化成int型指针。 (3)对于基本数据类型的变量、数组元素我们可以使用取地址运算符来获得它们的地址,但是也只有类型一致才能赋值。 int a[10]; //定义int型数组 int *i_pointer=a; //定义并初始化int型指针 (4)有一种特殊的void类型指针,可以存储任何的类型地址;但将一个void类型的地址赋值给非void类型的指针变量,要使用类型强制转换。 void v; //错误,不能定义void类型的变量 void *vp; //定义void类型的指针 数据类型 *指针变量名=初始地址表达式; C++语言程序设计教程 第5章 构造数据类型 4.指针运算 指针变量存放的是地址,因此指针的运算实际上就是地址的运算,但正是由于指针的这一特殊性,使指针所能进行的运算受到了一定的限制。指针通常进行下列几种运算:赋值运算、取值运算、算术运算、相减运算、比较运算。 (1)* 和运算 *称为指针运算符。出现在数据定义语句中时,* 在数据类型与变量之间,用来定义指针变量;出现指针变量表达式左边时,表示访问指针所指对象的内容。 int a[4]={1,2,3}; int *ip=a[2]; cout*ip; // 输出ip指向单元的内容,内容为整型数3 *ip=100; // 将100赋给a[2]; C++语言程序设计教程 第5章 构造数据类型 (2)指针与整数的加减运算 指针的加减运算与普遍变量的加减运算不同,由于指针存储的是变量的内存地址,指针加上或减去一个整数n,表示指针从当前位置向后或向前移动n个sizeof(数据类型)长度的存储单元。因此对于不同的数据类型,n的实际大小就不同。 int b[2][3][4]; typedef char A[10]; int *p1=b[1][0]; int *p2=(int *)b[1]; int *p3=(int *)(b+1); double *pd=(double *)p3; A *pa=(A *)p3; coutp1,p2,p3,pd,paendl; coutp1+1,p2+1,p3+1,pd+1,pa+1endl; 运行结果: 0013FF80, 0013FF80, 0013FF80, 0013FF80, 0013FF80 0013FF84, 0013FF84, 0013FF84, 0013FF88, 0013FF8A C++语言程序设计教程 第5章 构造数据类型 (3)指针自增、自减运算 指针的自增、自减运算是指针加减运算的特例。指针的自增或自减表示指针从当前位置向后或向前移动sizeof(数据类型)长度的存储单元。 int *p, *q, a=5; p=a; p++; //指针p后移4个字节 *p++; //先读取p指向的变量a的值5,然后使指针p后移4个字节 (*p)++; //读取p指向的变量a的值,然后使p指向的变量a自增1? *++p; //先使指针p后移4个字节,然后读取p指向的
您可能关注的文档
最近下载
- 微电子概论(第3版)课件4-1A集成电路版图设计规则 .pptx
- 与时俱进的《义务教育音乐课程标准》PPT课件.ppt VIP
- RoboSim虚拟机器人第十二课-测量距离.pdf VIP
- 房屋出租管理办法.pptx
- 工程造价咨询服务工作的范围、内容、要点、步骤和程序及成果保证体系.docx VIP
- 短视频视觉设计应用短视频制作全流程短视频后期剪辑58课件.pptx VIP
- 2024-2025学年地质版体育与健康一年级全一册教案.pdf VIP
- 部编版语文五年级上册第八单元《读书明智》单元整体设计.pdf VIP
- 医院药品储备定期评估、分析报告及改进措施.docx VIP
- 科学智能白皮书2025.pptx VIP
文档评论(0)