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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

關(guān)于參數(shù)傳遞

2019-11-18 15:05:50
字體:
供稿:網(wǎng)友

  現(xiàn)在網(wǎng)上對java和c++的參數(shù)傳遞機(jī)制爭論不休,我個(gè)人覺得是陷入了概念理解的陷阱。實(shí)際上這兩者的參數(shù)傳遞機(jī)制是完全一樣的,只不過java在語言書寫這方面做了簡化,讓程序員看不到指針,以加快開發(fā)速度。另外,關(guān)于參數(shù)類型是基本類型還是復(fù)雜類型,他們的傳遞機(jī)制也是一樣的。其中傳遞的都是一個(gè)整數(shù)值。我們從內(nèi)存塊這一角度來分析的話,或許就能夠發(fā)現(xiàn)其中奧秘。
c例子如下:
#include <iostream.h>
void exch(int *p1,int *p2);

int main()
{
int i =1,j=2;
cout<<"i="<<i<<",j="<<j<<endl;
exch(&i,&j);
cout<<"i="<<i<<",j<"<<j<<endl;
return 0;
}

void exch(int *p1,int *p2)
{
int* temp;
temp = p1;
p1 = p2;
p2 = temp;
}
結(jié)果為:
i=1,j=2
i=1,j=2

這一程序執(zhí)行過程中內(nèi)存變化如下:

執(zhí)行exch之前內(nèi)存分布如第一章圖所示,這時(shí)候打印,結(jié)果應(yīng)該是存儲(chǔ)在0018和0019單元的1和2。
進(jìn)入exch方法之后內(nèi)存分布如第二張圖所示,執(zhí)行完畢exch方法之后內(nèi)存分布如第三張圖所示。這時(shí)候打印i和j當(dāng)然依舊是存儲(chǔ)在0018和0019單元的1和2。
在Java中的情形也是一樣的??梢詫魅雃xch方法的參數(shù)看成是變量i和j的地址,也就是這里的p1和p2是c++里*p1和*p2的簡寫。假如參數(shù)類型不是基本類型,而是引用類型,使用內(nèi)存分布分析方法也能夠得到正確結(jié)果(使用引用類型作為例子也許更加輕易理解)。在Java中需要注重的是String類,該類實(shí)例是不可變的,也就是每次對其做修改都會(huì)創(chuàng)建新的String對象,而舊的對象沒有改變。
public class Test{
public static void main(String[] agrs){
Test t = new Test();
int i = 1;
int j = 2;
System.out.PRintln(i);
System.out.println(j);
t.exch(i, j);
System.out.println(i);
System.out.println(j);
}

public void exch(int p1, int p2){
int temp = 0;
temp = p1;
p1 = p2;
p2 = temp;
}
}
結(jié)果為:
1
2
1
2

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石林| 洛浦县| 遵化市| 漳浦县| 绥江县| 诸暨市| 汤原县| 潞西市| 瓮安县| 临邑县| 东至县| 米易县| 巴林右旗| 山阴县| 三亚市| 乃东县| 阳原县| 蒙城县| 扶绥县| 波密县| 马关县| 胶南市| 海口市| 肇州县| 颍上县| 芒康县| 仙居县| 宜兰市| 佛山市| 庄河市| 镇远县| 泰安市| 塔城市| 原阳县| 芒康县| 南部县| 郓城县| 万州区| 浪卡子县| 张家口市| 丰台区|