例输入两个数,并使其从大到小输出 maint i int* pl, p2, p, a, b scanf("%d, %d", &a, &b) 指针变量pl 2008 l=&a;p2=&b; 2002 指针变量p2 2006 if(a<b) 指针变量p 2006 i p=pI; pl=p2; p2=p; 2 整型变量a printf("a=d, b=%dn", a, b) 200 一整型变量b printf("max=%d, min=%odn", pl, p2) 运行结果:a=5,b=9 max min=5
例 输入两个数,并使其从大到小输出 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
★指针变量作为函数参数—地址传递 特点:共享内存双向”传递 例将数从大到小输出 swap(int x, int y) (main) 2000 变量a int temp 2002 5 变量b temp=X COPY/2006 (swap) 一变量x y=temp 2008 变量y 200A 变量temp mal i int a, b scanf("%d,%d", &a, &b) if(a<b) swap(a, b) printf("n%d, %dn", a, b)
指针变量作为函数参数——地址传递 特点:共享内存, “双向”传递 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
★指针变量作为函数参数地址传递 特点:共享内存、双向”传递 例将数从大到小输出 (main) swap(int x, int y) 2000 变量a int temp 2002 变量b temp=X 2004 2006 temp 值传递 2008 200 maino Int a, b, scanf("%d,%d", &a, &b if(a<b)swap(a, b) printf("n%d, %odin", 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
例将数从大到小输出 swap(int *pl, int *p2) i int p (main) 2000 ·整型变量a p-p 1一* 2002 整型变量b p 2: 2004 指针 pointer1 pz-p 2000 2006 干指针 pointer 2 2002 ma 2008 i int a, b COPY 200 (swap) 指针pl 2000 pointer I, pointer 2 200C 指针p2 scanf("%d, %d", &a, &b); 2002 POOR 整型p pointer_ 1=&a; pointer_2=&b: 2010 5 if(a<b)swap(pointer 1, pointer 2) printf("n%d, %dn", 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 例 将数从大到小输出
§103指针与数组 ★指向数组元素的指针变量 array p 例 Int array[l0] arrayal array[2 p p=&array / array3 B p-array 或int*p=& carraro 或int*p= array array 整型指针p& carraro 数组名是表示数组首地址的地址常量
§10.3 指针与数组 指向数组元素的指针变量 例 int array[10]; int *p; p=&array[0]; // p=array; 或 int *p=&array[0]; 或 int *p=array; array[0] array[1] array[2] array[3] array[9] ... 整型指针p &array[0] p 数组名是表示数组首地址的地址常量