能否通过调用下面的函数实现a和b互换? void swap (int x,int y) int temp; temp=x; x-y; y=temp; 虚实结合:函数调用中实参对形参的数据传递 是“值传递”,即单向传递,只能从实参向形 参传数据,形参值的改变无法反向回传给实参。 2017年4月26日12时 第6章指针 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 24 能否通过调用下面的函数实现a和b互换? void swap(int x,int y) { int temp; temp=x; x=y; y=temp; } 虚实结合:函数调用中实参对形参的数据传递 是“值传递” ,即单向传递,只能从实参向形 参传数据,形参值的改变无法反向回传给实参
为了使在函数中改变了的变量值能被main函 数所用,不能把要改变值的变量作为参数, 而应该用指针变量作为函数参数。 在函数执行过程中使指针变量所指向的变量 值发生变化,函数调用结束后,这些变量值 的变化依然保留下来,这样就实现了“通过 调用函数使变量的值发生变化,在主调函数 中使用这些改变了的值”的目的。 2017年4月26日12时 0务 第6章指针 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 25 • 为了使在函数中改变了的变量值能被main函 数所用,不能把要改变值的变量作为参数, 而应该用指针变量作为函数参数。 • 在函数执行过程中使指针变量所指向的变量 值发生变化,函数调用结束后,这些变量值 的变化依然保留下来,这样就实现了“通过 调用函数使变量的值发生变化,在主调函数 中使用这些改变了的值”的目的
通过函数调用得到个要改变的值,可采取以下步骤: ①在主调函数中设n个变量,用n个指针变量指向它 们 ②编写被调用函数,其形参为个指针变量,这些形 参指针变量应当与主调函数中的个指针变量具有相 同的基类型; ③在主调函数中将个指针变量作实参,将它们的值 (是地址值)传给所调用函数的个形参指针变量,这 样,形参指针变量也指向这n个变量; ④通过形参指针变量的指向,改变该个变量的值; ⑤在主调函数中就可以使用这些改变了值的变量。 2017年4月26日12时 第6章指针 HO 15分
HOME2017年4月26日12时 15分 第6章 指针 26 通过函数调用得到n个要改变的值,可采取以下步骤: ①在主调函数中设n个变量,用n个指针变量指向它 们; ②编写被调用函数,其形参为n个指针变量,这些形 参指针变量应当与主调函数中的n个指针变量具有相 同的基类型; ③在主调函数中将n个指针变量作实参,将它们的值 (是地址值)传给所调用函数的n个形参指针变量,这 样,形参指针变量也指向这n个变量; ④通过形参指针变量的指向,改变该n个变量的值; ⑤在主调函数中就可以使用这些改变了值的变量
例题2、3的变型: #include <iostream> using namespace std; int main() void swap(int *pl,int *p2); int *pointer_1,*pointer_2,a,b; cin>>a>>b; pointer 1=&a; pointer_2=&b; if(a<b)swap(pointer_1,pointer_2); cout<<"max="<<a<<"min="<<b<<endl; return 0; 2017年4月26日12时 H0务 第6章指针 27 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 27 #include <iostream> using namespace std; int main( ) { void swap(int *p1,int *p2); int *pointer_1, *pointer_2,a,b; cin>>a>>b; pointer_1=&a; pointer_2=&b; if(a<b) swap(pointer_1,pointer_2); cout<<"max="<<a<<" min="<<b<<endl; return 0; }
void swap(int *pl,int *p2) { int *temp; temp=pl; p1=p2; p2=temp; /不能通过改变形参指针变量的值而使实参指针 变量的值改变。 2017年4月26日12时 H0务 第6章指针 28 BACK NEXT
HOME2017年4月26日12时 15分 第6章 指针 28 void swap(int *p1,int *p2) { int *temp; temp=p1; p1=p2; p2=temp; } //不能通过改变形参指针变量的值而使实参指针 变量的值改变