- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章? 指针 §10.1 指针的概念 指针(pointer):是一个变量的地址。 指针变量:是一个变量,其值是另一个变量的地址。 任何变量都在计算机内存中占有一块内存区域, 变量的值就存放在这块内存区域之中 一个变量的访问(访问是指取出其值或向它赋值)方式有两种: (1)直接访问,通过变量名访问,如通过变量名i直接访问。 (2)间接访问,通过该变量的指针来访问,如通过i_pointer访问变量i。 §10.2 变量的指针 一、指针变量的定义 指针变量有三个属性: (1)该指针变量指向的变量的类型。如i_pointer指向的变量i是整型。 (2)该指针变量在内存中占多少内存单元。如i_pointer占两个内存单元,称为“近指针”,用near表示。如果该变量在内存中占4个内存单元,称为“远指针”,用far表示。如果未指定near或far,缺省是near。(指针变量在内存中要么占2个内存单元,要么占4个内存单元)。 (3)该指针变量指向哪一个变量,即该指针变量的值是多少。如i_pointer的值是2000。 指针变量定义的一般形式: 类型标识符 * 标识符 如: int *pointer_1, *pointer_2; 指针变量的赋值: 例、 pointer_1 = i; pointer_2 = j; 注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常数等)赋给一个指针变量,如: 二、指针变量的引用 有两个运算符可以引用指针变量: (1):取地址运算符。如 pointer_1 = i; (2)*:指针运算符。 用于访问指针变量所指向的变量。 *和是互逆运算 在复杂程序设计中,这种间接访问可以大大提高程序的效率并使程序非常简洁 例【10.1】通过指针变量访问整型变量 说明: 1、在定义指针变量时,还未规定它指向哪一个变量,此时不能用*运算符访问指针。只有在程序中用赋值语句具体规定后,才能用*运算符访问所指向的变量。 正确的引用: 2、区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别*的作用。 int a,b,c;int * p; (*表示定义指针)p = a; *p = 100; (*表示指针运算符)c = a * b; (*表示乘法运算符) [例10.2] 输入a和b两个整数,按先大后小的顺序输出a和b。 main(){ int *p1, *p2, *p, a, b;scanf(%d,%d,a,b);p1 = a; p2 = b;if (a b){ p = p1; p1 = p2; p2 = p; }printf(a=%d,b=%d\n,a,b);printf(max=%d,min=%d\n, *p1, *p2);}? 程序说明: 三、指针变量作为函数的参数 [例10.3] 题目要求输入a和b两个整数,按先大后小的顺序输出a和b。 main() {int a, b;? int *pointer_1, *pointer_2;? scanf(%d,%d,a,b);? pointer_1 = a; pointer_2 = b;? if (ab) swap(pointer_1, pointer_2); ?/* 另一种调用swap()的形式是: ?if (ab) swap(a,b); */ ?printf(\n%d,%d\n,a,b); } ? 1、程序执行过程的说明。 (4) 函数swap()调用结束后,形参p1、p2被释放,main中得到的a和b是已经被交换的值。 2、使用指针变量,应注意避免指针悬挂。 int swap(int *p1, int *p2){int *p;?*p = *p1;?*p1 = *p2;?*p2 = *p;} ?3、函数swap()的形参是指针变量,两种调用方式: swap(pointer_1, pointer_2); swap(a, b); 如果把swap()设计为下面的形式,不能实现a和b的值交换。int swap(int x, int y) { int t;?t = x;?x = y;?y = t;}?*形参的变化不影响实参 4、不能改变指针变量本身的值。但可以改变指针变量所指向的变量的值, 例、swap(pointer_1,pointer_2); swap(a,b); 因此,下面的程序也不能达到交换的目的。 int swap(int *p1, int *p2) /* 交换形参的值
您可能关注的文档
最近下载
- 售后服务体系、流程及售后保障措施.docx VIP
- 北师版初中心理健康七年级全一册第一课翻开新的一页开启新学期课.pptx VIP
- 注塑生产排程月计划(ASDJS)自动排程.xls VIP
- QCT484-1999 汽车油漆涂层.pdf VIP
- 《影视后期合成》教案全套项目1--11 初识After Effects--渲染输出.docx VIP
- SAP物料分类账操作详解(S4系统).doc VIP
- 人教版小学数学四年级上册第六单元《用五入法试商的除法》PPT课件.pptx VIP
- 云南硅pu篮球场施工方案.docx VIP
- 学生牛奶糕点配送项目供货保障措施方案.docx VIP
- 课件中国现代文学史下.pptx VIP
文档评论(0)