C++:函数参数传递-值传递、指针传递、引用传递

2025-07-12 20:15:48

1、参数传递:值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值;指针传递:传递的是一个外部实参的地址,当被调用函数的形参发生变化时,实参也会变化;引用传递:实参和形参通过引用绑定;形参的任何改动都会直接影响到实参;【注】:当某种类型不支持拷贝操作时,或拷贝大的类类型对象时比较低效,函数只能通过引用形参访问该类型的对象;【注】:如果函数无须改变引用形参的值,最好将其声明为常量引用;

C++:函数参数传递-值传递、指针传递、引用传递

3、值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值;//值传递void swap1(int p,int q){ int temp; temp=p; p=q; q=temp;}int main(){ int a=1,b=2; cout<<"before swap ..."<<endl; cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"a 的地址= "<<&a<<endl; cout<<"b 的地址= "<<&b<<endl; swap1(a,b); //swap2(&a,&b); //swap3(&a,&b); //swap4(a,b); cout<<"after swap ..."<<endl; cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"a 的地址= "<<&a<<endl; cout<<"b 的地址= "<<&b<<endl; system("pause"); return 0;}

C++:函数参数传递-值传递、指针传递、引用传递

5、指针传递二:swap3()swap3函数体内交换了p和q指向的地址//指针传递,函数体内只有指针的变姝耒匝揎化void swap3(int *p,int *q){ cout<<"before swap ..."<<endl; cout<<"p 的地址= "<<&p<<endl; cout<<"q 的地址= "<<&q<<endl; cout<<"*p = "<<*p<<endl; cout<<"*q = "<<*q<<endl; int *temp; temp=p; p=q; q=temp; cout<<"after swap ..."<<endl; cout<<"p 的地址= "<<&p<<endl; cout<<"q 的地址= "<<&q<<endl; cout<<"*p = "<<*p<<endl; cout<<"*q = "<<*q<<endl;}//调用int a=1,b=2;swap3(&a,&b);//指针传递解释:实参a的值为1,a的地址为8C4;实参b的值为2,b的地址为8E4;指针传递过程中传递的是a,b的地址;形参p是指向a地址8C4的指针,*p值为1;形参q是指向b地址8E4的指针,*q值为2;此时对指针p,q的值即8C4,8E4进行交换,交换之后,形参p是指向a地址8E4的指针,*p值为2;形参q是指向b地址8C4的指针,*q值为1;但a和b地址中的值并未发生变化,故a和b不变;故swap3函数体内交换了p和q指向的地址;

C++:函数参数传递-值传递、指针传递、引用传递
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢