《C语言程序设计》第7章地址和指针.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 地址和指针 问题的引入 使用指针有如下好处: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态的分配地址 得到多于一个的返回值 int a=3; 1101 afff 地址表示 a 3 指针 7.1 地址和指针的概念 计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存的地址。 如果程序中定义了一个变量,C语言的编译系统就会根据定义中的变量,为其分配一定字节数的内存单元 例如: char ch = A; int i = 5; float f = 3.8; 指针变量 指针变量的定义 int i,j, *p; int i=3 , *p; p=i; i j p 变量的值 存放的是地址 i 3 p i 指针变量的引用 假设有如下定义: int i=3 , a , *p; p=i; printf(%p,p); p=a; scanf(%d,p); printf(%d,*p); scanf(%d,a); printf(%d,a); *p=5; i a p 3 i a 8 5 main() { int i,j,*p,*q; scanf(%d,%d,i,j); p=i; q=j; printf(%p,%p\n,i,p); printf(%p,%p\n,j,q); printf(%d,%d\n,i,*p); printf(%d,%d\n,j,*q); q=p; printf(%d,%d\n,*p,*q); printf(%d,%d\n,i,j); } 【例7.1】 下面的程序是指针变量的引用,请认真体会引用的方法 i j p q 3 5 i j i 【例7.2】从键盘输入a和b两个整数,按照从大到小的顺序输出排序后的结果。 main() { int a=5,b=9; int p,*pa,*pb; printf(%d,%d\n,a,b); pa=a; pb=b; if(*pa*pb) { p=*pa;*pa=*pb;*pb=p;} printf(%d,%d\n,*pa,*pb); } swap(int x,int y) { int temp; temp=x; x=y; y=temp;} main() { int a,b; scanf(%d,%d,a,b); if(ab) swap(a,b); printf(\n%d,%d\n,a,b); } COPY (main) a b 9 5 (swap) x y temp 9 5 9 5 5 例 将数从大到小输出 问题的提出 swap(int x,int y) { int temp; temp=x; x=y; y=temp;} main() { int a,b; scanf(%d,%d,a,b); if(ab) swap(a,b); printf(\n%d,%d\n,a,b); } 运行结果:5, 9 值传递 (main) a b 9 5 问题的提出 例 将数从大到小输出 swap(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p;} 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);} (main) a b pointer_1 pointer_2 5 9 2000 2002 (swap) p p1 p2 2000 2002 5 9 5 例 将数从大到小输出 swap(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p;} 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);} p (main) a b pointer_1

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档