- 1、本文档共518页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c程序设计谭浩强第四版解读
指针变量作为函数参数——地址传递 特点:共享内存,“双向”传递 C语言程序设计 第八章 指针 例8.3a 将数从大到小输出 #include stdio.h void swap(int x,int y) { int temp; temp=x; x=y; y=temp; } void main() { int a,b; scanf(%d,%d,a,b); if(ab) swap(a,b); printf(\n%d,%d\n,a,b); } 运行结果: 5 , 9 ? 5 , 9 …... …... 2000 2008 200A 2002 2004 2006 5 变量a 变量b (main) 9 5 5 9 5 9 COPY 变量temp 变量y 变量x (swap) 值传递 函数调用结束后,分配 给x,y,temp单元释放 C语言程序设计 第八章 指针 例8.3 将数从大到小输出 (使用指针变量作函数参数) #include stdio.h void main() { void swap(int *p1, int *p2); 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); printf(\n%d,%d\n,a,b);} void swap(int *p1, int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp;} 运行情况: 5,9 ? 9,5 问题:函数调用结束后, 分配给p1,p2,p单元释放否? …... 2000 2008 200A 2002 2004 2006 200C 200E 2010 ... 5 9 整型变量a 整型变量b (main) 指针pointer_1 指针pointer_2 2000 2002 (swap) 指针p1 指针p2 整型p 5 9 2000 2002 5 COPY 地址传递 C语言程序设计 第八章 指针 例8.3b 将数从大到小输出 void swap(int *p1, int *p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; } void 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); printf(\n%d,%d\n,a,b); } 运行结果:9,9 编译警告! 结果不对! int x; int *temp=x; …... 2000 2008 200A 2002 2004 2006 200C 200E 2010 ... 5 9 整型变量a 整型变量b (main) 指针pointer_1 指针pointer_2 2000 2002 9 9 2000 2002 COPY (swap) 指针p1 指针p2 指针p **** 假设2000 指针变量在使用前 必须赋值! C语言程序设计 第八章 指针 例8.3c 将数从大到小输出 void swap(int x,int y) { int temp; temp=x; x=y; y=temp; } void 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); printf(\n%d,%d\n,a,b); } 运行结果:5
文档评论(0)