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

 时间:2024-10-13 16:35:33

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++:函数参数传递-值传递、指针传递、引用传递
  • 如何用visual studio新建一个C和C++项目
  • C++:用Dev C++输出你的Hello World!
  • 如何在win10上下载安装wireshark
  • C#如何通过FileInfo获取文件的特征
  • 怎样安装单片机编程软件keil4
  • 热门搜索
    端午节是什么时候 思密达是什么药 灰指甲是什么症状 蚂蚁上树是什么意思 辰五行属什么 chips是什么意思 卵泡期是什么时候 梦见大便是什么意思 怕冷是什么原因 三教九流指的是什么