函数调用所采用的虚实结合在传值方面是有缺陷的.单向的"值传递"方式,只能从实参向形参传递数据,形参值的改变无法回传给实参!恩,这在某种情况下让人着实无法忍受.
今儿终于捡到个大宝贝把问题搞定了,高兴哈!指针,你这沟通方面的天才!给正郁闷着的叨咕下先.
[指针作为函数参数时,当然也不会改变实参指针变量的值,但可以改变实参指针变量所指向变量的值.]这就是解决问题的关键.
进一步解释哈,函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作函数参数,就可以通过指针变量改变主调函数中变量的值,相当于通过函数调用从被调用的函数中得到多个值.如果不用指针变量,我们就很难做到这一点.
举正反两个简单的例子来介绍具体实现方法.先让大家看个危机四伏却很正确的:
#include
using namespace std;
int main( )
{ void swap(int *p1,int *p2); //函数声明
int *pointer_1,*pointer_2,a,b; //定义指针变量pointer_1,pointer_2,整型变量a,b
cin>>a>>b;
pointer_1=&a; //使pointer_1指向a
pointer_2=&b; //使pointer_2指向b
if(a不要将main函数中的swap函数调用写成 if(a
using namespace std;
int main( )
{ void swap(int *p1,int *p2); //函数声明
int *pointer_1,*pointer_2,a,b; //定义指针变量pointer_1,pointer_2,整型变量a,b
cin>>a>>b;
pointer_1=&a; //使pointer_1指向a
pointer_2=&b; //使pointer_2指向b
if(a