第10章 函数的进一步讨论
第10章 函数的进一步讨论
10.1指针变量作为函数形参一地址传递 特点:共享内存,“双向”传递 例交换两数并输出 方法一: (main) main() 2000 变量a int a,b; 2004 5 ←一变量b int swap(int,int); 9 2008 scanf("%d,%d",&a&b); COPYA 2012 (swap) ←一变量x swap(a,b)月 2016 9 一变量y printf("\n%d,%d n",a,b); 2020 5 ←变量temp 5 swap(int x,int y) int temp; temp-x; X-y, y-temp;
10.1指针变量作为函数形参——地址传递 特点:共享内存, “双向”传递 main() { int a,b; int swap(int,int); scanf("%d,%d",&a,&b); swap(a,b); printf("\n%d,%d\n",a,b); } swap(int x,int y) { int temp; temp=x; x=y; y=temp; } . . 2000 2016 2020 2004 2008 2012 5 变量a 变量b (main) 9 变量temp 变量y 变量x (swap) 5 5 95 9 COPY 例 交换两数并输出 方法一:
10.1指针变量作为函数参数一地址传递 特点:共享内存,“双向”传递 例交换两数并输出 方法一: (main) main() 2000 变量a int a,b; 2004 5 变量b int swap(int,int); 9 2008 2012 swap(a,b); 值传递 2016 printf("\n%od,% 单向传值 2020 swap(int x,int y) int temp; temp=x; X-y; y=temp; 运行结果:5,9
10.1指针变量作为函数参数——地址传递 特点:共享内存, “双向”传递 main() { int a,b; int swap(int,int); scanf("%d,%d",&a,&b); swap(a,b); printf("\n%d,%d\n",a,b); } swap(int x,int y) { int temp; temp=x; x=y; y=temp; } 例 交换两数并输出 方法一: 值传递 单向传值 . . 2000 2016 2020 2004 2008 2012 5 变量a 变量b (main) 9 运行结果:5, 9
例交换两数并输出 方法二: main() int a,b; (main) 2000 整型变量a int *pointer 1,*pointer 2; 9 2004 整型变量b int swap(int,int); 5 scanf("%d,%d",&a,&b); 2008 指针pointer_I 2000 pointer_1=&a;pointer_2=&b; 2012 指针pointer_2 swap(pointer_1.pointer 2)cOP 2016 2004 printf"n%d,%dn",a,b); 2020 (swap) 指针pl 2000 Q} 2024 ←一指针p2 swap(int *pl,int *p2) 2004 2028 整型t int t; 5 =*pl; *pl=*p2; *p2=t;
main() { int a,b; int *pointer_1,*pointer_2; int swap(int,int); scanf("%d,%d",&a,&b); pointer_1=&a; pointer_2=&b; swap(pointer_1,pointer_2); printf(" \n%d,%d\n",a,b); } swap(int *p1, int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } . 2000 2016 2020 2004 2008 2012 2024 2028 . . 59 整型变量 a 整型变量 b (main) 指针pointer_1 指针pointer_2 2000 2004 (swap) 指针p1 指针p2 整型 t 59 2000 2004 COPY 5 例 交换两数并输出 方法二:
例交换两数并输出 方法二: main() int a,b; (main) 2000 整型变量a int *pointer 1,*pointer 2; 9 2004 整型变量b int swap(int,int); 5 scanf("%d,%d",&a,&b); 2008 指针pointer_I 2000 pointer_1=&a;pointer_2=&b; 2012 指针pointer_2 2004 swap(pointer_1,pointer_2); 2016 printf("n%d,%d"ab) 2020 地址传递 swap(int *p1,int p2) int t; t=*pl; *pl=*p2; *p2=t, 运行结果:9,5
main() { int a,b; int *pointer_1,*pointer_2; int swap(int,int); scanf("%d,%d",&a,&b); pointer_1=&a; pointer_2=&b; swap(pointer_1,pointer_2); printf(" \n%d,%d \n",a,b); } swap(int *p1, int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } . 2000 2016 2020 2004 2008 2012 . . 59 整型变量 a 整型变量 b (main) 指针pointer_1 指针pointer_2 2000 2004 59 运行结果: 9 , 5 地址传递 例 交换两数并输出 方法二: