实参变量和形参变量之间的数据传递是单向的“值 传递”方式。指针变量作函数参数也要遵循这一规 则。调用函数时不会改变实参指针变量的值,但可 以改变实参指针变量所指向变量的值。 pointer 1 a a pl a pointer 1 a &a 45 &a 45 &b 45 &b 45 pointer 2 b p2 b p2 b pointer 2 b &b 78 &b 78 &a 78 &a 78 (a) (b) (c) (d) 2017年4月26日12时 H0务 第6章指针 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 29 实参变量和形参变量之间的数据传递是单向的“值 传递”方式。指针变量作函数参数也要遵循这一规 则。调用函数时不会改变实参指针变量的值,但可 以改变实参指针变量所指向变量的值
函数的调用可以而且只可以得到一个返回值, 即函数值 : 使用指针变量作函数参数,就可以通过指针变 量改变主调函数中变量的值,相当于通过函数 调用从被调用的函数中得到多个返回值。如果 不用指针变量是难以做到这一点的。 2017年4月26日12时 H0务 第6章指针 30 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 30 函数的调用可以而且只可以得到一个返回值, 即函数值; 使用指针变量作函数参数,就可以通过指针变 量改变主调函数中变量的值,相当于通过函数 调用从被调用的函数中得到多个返回值。如果 不用指针变量是难以做到这一点的
两数互换 swap(a,b); ·swap(pt1,pt2); void swap (int x,int y) void swap(int *pl,int *p2) int temp; { ●】 temp=x; int *temp; x-y; temp=pl; y-temp; p1=p2; p2=temp; } 2017年4月26日12时 H0座5务 第6章指针 31 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 31 • swap(a,b); • void swap(int x,int y) • { • int temp; • temp=x; • x=y; • y=temp; • } • swap(pt1,pt2); • void swap(int *p1,int *p2) • { • int *temp; • temp=p1; • p1=p2; • p2=temp; • }
两数互换 swap(ptl,pt2); swap(a,b); void swap(int *pl,int void swap(int &x,int &y) *p2) 。{ int temp; int temp; temp=x; temp=*pl; ● X-y; *pl=*p2; y-temp; *p2-temp; 。} 2017年4月26日12时 H0座5务 第6章指针 32 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 32 • swap(pt1,pt2); • void swap(int *p1,int *p2) • { • int temp; • temp=*p1; • *p1=*p2; • *p2=temp; • } • swap(a,b); • void swap(int &x,int &y) • { • int temp; • temp=x; • x=y; • y=temp; • }
例5.7多个数交换 void select_sort(int array[],int n) int i,j,k,t; for(i=0;i<n-1;i++) k-i; for(j=i+1;j<n;j++) if(array[i]<array[k])k=j; t=array[k];array[k]=array[i];array[i]=t; 2017年4月26日12时 H0平5务 第6章指针 33 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 33 • void select_sort(int array[],int n) • { • int i,j,k,t; • for(i=0;i<n-1;i++) • { • k=i; • for(j=i+1;j<n;j++) • if(array[j]<array[k]) k=j; • t=array[k];array[k]=array[i];array[i]=t; • } • }