第十七章 指针_第1页
第十七章 指针_第2页
第十七章 指针_第3页
第十七章 指针_第4页
第十七章 指针_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十七章:指针. .指针与指针变量指针与指针变量ab20102012p2010q2012因此,在因此,在C语言中,将地语言中,将地址形象化地称为址形象化地称为指针指针基类型,即该指针变基类型,即该指针变量所指向的变量的类量所指向的变量的类型型如何使一个指针变量指向另如何使一个指针变量指向另外一个变量呢?外一个变量呢?P=&a;q=&b;ab20102012p2010q2012交换前交换前1020a1a2P1 &a1P2 &a21020a1*p2a2*p1交换后交换后P1 &a2P2 &a1P=p1;p1=p2;p2=p下面表示下面表示p1和和p1

2、交换所指内容交换所指内容2010a1*p1a2*p2交换后交换后P1 &a1P2 &a21020a1*p1a2*p2交换前交换前P1 &a1P2 &a2a=*p1;*p1=*p2;*p2=pswap(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,%dn,a,b);例例17_4.c17_4.c 将数从大到小输出将数从大到小输出.20002008200A2002200420065变量

3、a 变量b(main)9 变量temp 变量y 变量x(swap)559 59COPY17.217.2指针变量作为函数参数指针变量作为函数参数地址传递地址传递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,%dn,a,b);例 17_4.c 将数从大到小输出值传递.20002008200A2002200420065变量a 变量b(main)9运行结果:5, 9swap(int *p1, int *p2)

4、 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,%dn,a,b);.20002008200A200220042006200C200E2010.59整型变量a 整型变量b(main)指针pointer_1指针pointer_220002002(swap)指针p1指针p2整型p592000

5、2002COPY5例例17_5.c 将数从大到小输出将数从大到小输出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,%dn,a,b);.20002008200A200220042006200C200E2010.59整型变量a 整型变量b(ma

6、in)指针pointer_1指针pointer_22000200259运行结果:9,5地址传递例例 17_5.c将数从大到小输出(将数从大到小输出(1 1)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,%dn,a,b);运行结果:9

7、,9编译警告!结果不对!int x;int *p=&x;x;.20002008200A200220042006200C200E2010.59整型变量a 整型变量b(main)指针pointer_1指针pointer_2200020029920002002COPY(swap)指针p1指针p2指针p*假设2000指针变量在使用前必须赋值!例例17_5.c 将数从大到小输出将数从大到小输出(2)/*ch9_32.c*/swap(int x,int y) int t; t=x; x=y; y=t;main() int a,b; int *pointer_1,*pointer_2; scanf(

8、%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab) swap(*pointer_1,*pointer_2); printf(n%d,%dn,a,b);运行结果:5,9值传递.20002008200A200220042006200C200E2010.59整型a 整型b(main)pointer_1pointer_2200020029COPY(swap)整型x整型b整型t555 9例例 17_5.c将数从大到小输出(将数从大到小输出(3 3)运行结果:5,9swap(int *p1, int *p2) int *p; p

9、=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(%d,%d,*pointer_1,*pointer_2);.20002008200A200220042006200C200E2010.59整型a 整型b(main)pointer_1pointer_22000200220002002COPY(swap)指针p1指针p2指

10、针p*2000地址传递20002002例例 17_5.c将数从大到小输出(将数从大到小输出(4 4)17.317.3指针与数组指针与数组A0A1A2A3A4P=ap=a+1P=a+2P=a+3P=a+4例例17_6.cmain( ) int a 5 =1, 3, 5, 7, 9, *p; for(i=0;i5;i+) printf(“%d”,*(a+i);Printf(“n”);/*地址法地址法*/ for (p=a; pa+5; p+) printf(“%d” , *p);/*指针法指针法*/如何用一个指针变量将数组中的元素取出并显示出来?如何用一个指针变量将数组中的元素取出并显示出来?A0

11、0A01A02A10A11A12A20A21A22P=&A00P+1P+2 :P+i :P+8二、二维数组的指针二、二维数组的指针复习二维数组在内存中的表示法?复习二维数组在内存中的表示法?每一行的元素每一行的元素个数个数定义格式:定义格式:存储类型存储类型 数据类型数据类型 (*指针变量指针变量 名)名)元素个数元素个数例如:例如:int a34; int (*p)4; p=a0;A0 1 2 3A1 4 5 6A2 7 8 9PP+1P+2所以,我们可以定义一种指向行向量的指针,让它指向二所以,我们可以定义一种指向行向量的指针,让它指向二维数组的第一行,该指针加维数组的第一行,该指针加1,就指向二维数组的下一行,就指向二维数组的下一行,这样的指针就叫做这样的指针就叫做行指针。行指针。P实际上是一个二级指针,必须对它施加两次实际上是一个二级指针,必须对它施加两次*运算,才能得运算,才能得到相应的数组元素值。到相应的数组元素值。17.4字符串的指针字符串的指针main()static char string=“I love china!”;Printf(“%sn”,string);main()char *string=“I love china!”;Printf(“%sn”,string

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论