认识指针和函数 (注意值传递和地址传递)

#include<iostream>

using namespace std;

int swap01(int a,int b);

int swap02(int* p1,int* p2);

int swap01(int a,int b)

{

inttemp = a;

a= b;

b= temp;        

cout << "swap01a="<< a << endl;

cout << "swap01b="<< b << endl;

//形参可以改变

return0;

}

 

int swap02(int* p1,int* p2)

{

inttemp = *p1;

*p1= *p2;

*p2= temp;

return0;

}

 

int main()

{

//值传递和地址传递

inta = 10;

intb = 20;

swap01(a,b);

cout<< "a=" << a << endl;

cout<< "b=" << b << endl;

//值传递不会改变main函数中的实参

 

//地址传递

swap02(&a,&b);

cout<< "a=" << a << endl;

cout<< "b=" << b << endl;

//地址传递可以改变main函数中的实参的值;

}

总结:

地址是系统中的编号 一般不会随意改变

值传递时,只是将main函数中数据复制一份到子函数中,子函数中的值改变,不会改改main函数中的数据

地址传递时,数据的地址更改则数据更改,可以改变main函数中的数据。