国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

參數傳遞方式

2019-11-11 01:32:25
字體:
來源:轉載
供稿:網友
C里面有兩種傳遞1、值傳遞2、指針傳遞嚴格來看,只有一種傳遞,值傳遞,指針傳遞也是按值傳遞的,復制的是地址。C++里面有三種傳遞方法:1、值傳遞2、指針傳遞3、引用傳遞但是嚴格來看,是兩種,其實指針傳遞也是值傳遞,只不過是值傳遞的是地址。
轉自https://zhidao.baidu.com/question/127400341.html?qbl=relate_question_4&Word=%B4%AB%B2%CE%D3%D0%C8%FD%D6%D6%B7%BD%CA%BD
#include<iostream>using namespace std;void swap(int a,int b){int temp;temp=a;a=b;b=temp;} main(){int a=3,b=5;cout<< "before ‘swap’:a="<<a<<",b="<<b<<endl;swap(a,b);cout<<"after  ‘swap’:a="<<a<<",b="<<b<<endl;}這個例子是傳值調用, 意思就是 形參 的 改變不會影響 實參的值。你運行一下可知 主函數調用了swap函數后 a,b的值并沒有發生交換。原因是,調用swap函數時 編譯器為 swap(int a,int b) 中的形參 a , b單獨分配內存空間,并接受主函數傳遞來的值,這塊內存空間和 main()函數中的 a ,b 不是同一內存空間。 所以在swap(int a,int b) 中 a , b發生了交換,但main函數中a , b沒發生交換。即主調函數與被調函數的操作對象各不相同,參數僅在調用時由實參向形參傳遞,而不可由形參向實參傳遞。要使a ,b發生交換 需要使用傳址調用。程序改為如下:#include<iostream>using namespace std;void swap(int & a,int &b){int temp;temp=a;a=b;b=temp;cout<<"in ‘swap’:a="<<a<<",b="<<b<<endl;}  main(){int a=3,b=5;cout<< "before ‘swap’:a="<<a<<",b="<<b<<endl;swap(a,b);cout<<"after  ‘swap’:a="<<a<<",b="<<b<<endl;}引用可以看作是一個變量的別名,使用 引用 時 ,對于void swap(int a,int b)   編譯器并沒有給形參a,b分配新的內存空間,只是使 形參a,b指向了main函數中實參a,b的內存空間,他們共享同一內空間,即把地址給了形參。所以在void swap(int a,int b)函數中對這塊內存的改變也就改變了實參的值。除了使用引用,也可以使用指針。指針方式和引用方式都屬于傳址調用。 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄垣县| 伽师县| 郸城县| 乌兰察布市| 高陵县| 阿合奇县| 乌拉特前旗| 崇左市| 南丰县| 射阳县| 德保县| 中超| 东源县| 浦北县| 仲巴县| 金川县| 武冈市| 宾阳县| 和顺县| 德令哈市| 隆化县| 龙川县| 墨玉县| 华容县| 同心县| 贡山| 浦江县| 潢川县| 工布江达县| 娱乐| 滦南县| 文安县| 岐山县| 正安县| 南溪县| 正安县| 玉田县| 淅川县| 潮州市| 卢湾区| 沙湾县|