- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GEMS系统.ppt
第八章 指针 指针的基本概念 指针的运算 指针与数组 堆内存分配 const指针 指针与函数 指针数组 地下工作者阿金接到上级指令,要去寻找打开密电码的密钥,这是一个整数。几经周折,才探知如下线索,密钥藏在一栋三年前就被贴上封条的小楼中。一个风雨交加的夜晚,阿金潜入了小楼,房间很多,不知该进哪一间,正在一筹莫展之际,忽然走廊上的电话铃声响起。艺高人胆大,阿金毫不迟疑,抓起听筒,只听一个陌生人说:“去打开211房间,那里有线索”。阿金疾步上楼,打开211房间,用电筒一照,只见桌上赫然6个大字:地址1000。阿金眼睛一亮,迅速找到1000房间,取出重要数据66,完成了任务。 数据藏在一个内存地址单元中,地址是1000。 地址1000又由P单元所指认,P单元的地址为211。 66的直接地址是1000;66的间接地址是211;211中存的是直接地址1000。 称P为指针变量,1000是指针变量的值,实际上是有用数据藏在存储器中的地址。 指针 指针变量:用来存放另一变量地址的变量; 一种特殊的变量,特殊性表现在类型和值上; 从变量角度讲,指针也具有变量的三个要素: 变量名,这与一般变量取名相同,由英文字符开始。 指针变量的类型,是指针所指向的变量的类型,而不是自身的类型。 指针的值是某个变量的内存地址。 指针的定义 指针变量定义的一般形式: 类型标识符 *指针变量名 int *p, *q; // 定义p,q为指向整数类型变量的指针 float *point; // 定义point为指向float型变量的指针 double *pd; // 定义pd为指向double型变量的指针 int (*pa)[10]; // 定义pa为指向int型数组的指针 int (*pu)(); // 定义pu为指向int型函数的指针 int **qq; // 定义qq为指向int型指针的指针 指针赋值 int a,b; // 定义整型变量a,b int *p,*q; // 定义p,q为指向整型变量的指针变量 a=66; // 将66赋给a p = a; //将变量a的地址赋给p b = *p; //将p指向的变量a的值赋给变量b q = p; // 将p的值赋给q int a=5; *a; //Error float *p = a; //Error int i=5, *p; p = i; i, *i, i, p, *p, p *i = i; *p = i; 指针的初始化 定义并初始化: int a; int *p = a; 先定义后赋值: int a; int *p; p = a; //不要写成 *p = a; *p = (int) a 向指针所指向的内存单元赋值 void main() { int a,b; int *p,*q; a=66; p=a; q=b; *q=*p; cout b= b //输出b的值 cout *q= *q); //输出b的值 } 指针的算术运算 指针与整数的加减运算 指针 p 加上或减去 n ,其意义是指针当前指向位置的前方或后方第 n 个数据的地址。 运算的结果值取决于指针指向的数据类型。 指针加一,减一运算 指向下一个或前一个数据。 例如:y=*px++ 相当于 y=*(px++) (*和++优先级相同,自右向左运算) 指针的关系运算 指向相同类型数据的指针之间可以进行各种关系运算; 两个指针变量相等表示它们指向同一个变量; 指向不同数据类型的指针、指针与一般整型变量之间的关系运算是无意义的; 指针可以和零之间进行等于或不等于的关系运算。如:p==0或p!=0; 指针和数组 引用数组元素的方法: 数组下标法,如 a[i]; 指针表示法,如 *(a + i); int a[6]; a[0] = 1; *a = 1; 指向数组元素的指针 数组名是数组的首地址,是一个常量指针; int a[6], *p1, *p2, *p3; p1 = a; p2 = a[0]; p3 = a[3]; int a[6], *p=a; p=a[k]等效于p=p+k 等效于p=a+k a[k]等效于
文档评论(0)