()第十章指针 Ch9 0c 例指针的概念 运行结果 main a:10 f86 整型变量a i int a; pa:10 int *pa=&a; &a: f86(hex)187 10 a=10: pa: 186(hex) 188 指针变量pa printf("a: %d n",a); &pa: f88(hex)89 186 printf( *pa: %dn", "pa) f8a printf("&a: %x(hex)ln", &a); fob printf("pa: %x(hex)n",pa); f8c printf("&pa: %x(hex))\n", &pa);
11 第十章 指针 例 指针的概念 main() { int a; int *pa=&a; a=10; printf("a:%d\n",a); printf("*pa:%d\n",*pa); printf("&a:%x(hex)\n",&a); printf("pa:%x(hex)\n",pa); printf("&pa:%x(hex)\n",&pa); } 运行结果: a:10 *pa:10 &a:f86(hex) pa:f86(hex) &pa:f88(hex) …... …... f86 f8a f8c f8b 整型变量a 10 指针变量pa f87 f88 f89 f86
()第十章指针 例:输入两个数,并使其从大到小输出 Ch9 ol.c main i int*pl, "p2, *p, a, b; 2000 :指针变量pl 2008 scanf(%d, %d", &a, &b); 2002 指针变量p2 2006 pl=&a; p2=&b 2004 指针变量p if(a<b) i p=pl; pl=p2; p2=p; 1 2095-整型变量a 2006 2006 printf(a=%d, b=%dn", a, b) 9于型变量 printf(" max%d, min=%d\n",*pl, *p2); 运行结果:a=5,b-9 max=9, min=5
12 第十章 指针 例: 输入两个数,并使其从大到小输出 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); } 运行结果:a=5,b=9 max=9,min=5 …... …... 指针变量p1 指针变量p 2000 2008 2002 2004 2006 指针变量p2 整型变量b 整型变量a 5 2006 9 2008 2006 2008 2006
第十章指针 指针变量作为函数参数—地址传递 特点:共享内存,双向”传递 例将教从大到小输出 (main) 2000 变量a swap(int x, int y) 2002 5 变量b i int temp 9 004 temp-=; COPY 2006 (swap) 变量x X-y 2008 y-temp 200 955 变量 ←变量tem maino i int a, b scanf(%od, %d", &a, &b); if(a<b)swap(a, b ); printf("in%d, %od\",a, b)
13 第十章 指针 • 指针变量作为函数参数——地址传递 特点:共享内存, “双向”传递 swap(int x,int y) { int temp; temp=x; x=y; y=temp; } main() { int a,b; scanf("%d,%d",&a,&b); if(a<b) swap(a,b); printf("\n%d,%d\n",a,b); } 例 将数从大到小输出 …... …... 2000 2008 200A 2002 2004 2006 5 变量a 变量b (main) 9 变量temp 变量y 变量x (swap) 5 5 95 9 COPY
()第十章指针 例将数从大到小输出 swap(int x, int y) (main) i int temp 2000 变量a mp- 2002 59 变量b X-y; 2004 y=temp; 2006 值传递 2008 200 main 10 i int a, b scanf(%od, %d", &a, &b) if(a<b) swap(a, b); printf(" in%d, %od\n", a, b 运行结果:5,9
14 第十章 指针 swap(int x,int y) { int temp; temp=x; x=y; y=temp; } main() { int a,b; scanf("%d,%d",&a,&b); if(a<b) swap(a,b); printf("\n%d,%d\n",a,b); } 例 将数从大到小输出 值传递 …... …... 2000 2008 200A 2002 2004 2006 5 变量a 变量b (main) 9 运行结果:5, 9
()第十章指针 ch9 03.c 例将数从大到小輸出 (main) swap(int *pl, int *p2) 200 整型变量a i int p 2002 整型变量b 5 p 20041 指针 pointer 1 p1=*p2; 2000 2006 指针 pointer *p2=p, 2002 2008 COPY 200A (swap) main ( 指针pl 2000 指针p2 int a b 200G 2002 int *pointer 1, " pointer 2 200E 5 整型p scan f("%d,%d",&a,&b);2010 pointer 1=&a; pointer 2=&b if(a<b swap(pointer 1, pointer 2); printf("in%d, %d\n",a, b);
15 第十章 指针 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(a<b)swap(pointer_1,pointer_2); printf("\n%d,%d\n",a,b); } …... 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 COPY 5 例 将数从大到小输出