指针变量作为函数参数—地址传递 特点:共享内存,双向”传递 例将数从大到小输出 swap(int x, int y) (main) 2000 变量a i int temp 2002 变量b temp=x, 9 2004 2006 temp; 值传递 2008 200 main( i int a, b scanf("%d, %od", &a, &b) if(a<b) swap(a, b) printf("n%d, %odn", a, b) 运行结果:5,9
指针变量作为函数参数——地址传递 特点:共享内存, “双向”传递 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
例将数从大到小输出c3c swap(int *pl, int *p2) i int p (main) 2000 整型变量a p 2002 整型变量b p 2004 指针 pointer1 2000 2006 十指针 Pointer2 2002 main 2008 COPY swap i int a, b 200A 指针pl 2000 int*pointer 1, pointer 200C 指针p2 scanf("%d, %d", &a, &b) 2002 200E 整型 pointer_1=&a; pointer_2=&b; bool if(a<b)swap(pointer l, pointer 2) printf("n%d, %odin", a, b)
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 例 将数从大到小输出
例将数从大到小输出c3c swap(int *pl, int *p2) i int p (main) 2000 整型变量a p 2002 整型变量b p 2004 指针 pointer1 2000 地址传递 2006 十指针 Pointer2 2002 main 2008 i int a, b 200A int*pointer 1, pointer 200C scant("%od, %d", &a, &b) 200E pointer_1=&a, pointer_2=&b; koid if(a<b)swap(pointer l, pointer 2) printf("n%d, %odin", 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(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 5 9 例 将数从大到小输出 运行结果:9,5 地址传递
例将数从大到小输出cg3Lc swap(int pl, int*p2) i int*p (main) 200 整型变量a p-p Int X, 2002 整型变量b n1* 9 p )2 p p=&x 2004 指针 pointer1 2=*1 p 2000 2006 指针 2002 pointer 2 编译警告! 2008 mal 结果不对!COPY )一指针 Int a, b, 2000 int*pointer l, pointer 2 200C 指针p2 2002 scanf("%od, %od", &a, &b) 20E 指针p **水 pointer 1=&a; pointer 2=&b 2010 1假设2000 if(a<b) swap(pointer 1, pointer 2) printf("n%d, %odn", a, b) 指针变量在使用愈 必须赋值 运行结果:9,9
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); } 运行结果:9,9 编译警告! 结果不对! int x; int *p=&x;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 Ch9 32.c /*ch932c* (main) swap(int x, int y) 200 整型a i int t: 2002 整型b 2004 值传递 pointer 1 2000 2006 ointer 2 mal 2002 2008 Int a b COPY (swap) 整型x int pointer 1, pointer scanf("%d, %d", &a, &b) 200C 整型y pointer 1=&a; pointer 2=&b 200E 整型t 5 if(a<b) swap('pointer 1, *pointer 2) 200 printf("n%d, %odn", a, b) 运行结果:5,9
/*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("%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); } 运行结果: 5 , 9 例 将数从大到小输出 值传递 …... 2000 2008 200A 2002 2004 2006 200C 200E 2010 ... 59 整型 a 整型 b (main) pointer_1 pointer_2 2000 2002 9 COPY (swap) 整型 x 整型 y 整型 t 5595