成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C++函數(shù)參數(shù)與Java傳遞比較

開發(fā) 后端
下文介紹說明下C++函數(shù)參數(shù)與JAVA之間的傳遞比較,Java都是值傳遞,而C++中包括值傳遞和引用傳遞pass-by-reference。

對于C++函數(shù)參數(shù)與Java傳遞比較的問題,相信這是許多技術(shù)人員和一些開發(fā)人員的頭疼的一塊心病,看完本篇文章您就會了解什么是Java值傳遞,什么是C++函數(shù)參數(shù)值傳遞。

先說Java,先做幾點(diǎn)說明:

在Java中,無非就是兩種類型,即基本類型和從Object繼承下來的對象類型,而對象類型又包括String這種一旦初始化就不可改變內(nèi)容的類型和BufferString這種可以初始化后可以改變內(nèi)容的類型。然后看一下代碼示例:

  1. public class Test {  
  2.  public static void main(String args[]) {  
  3.   Integer interger1, interger2;  
  4.   int i, j;  
  5.   interger1 = new Integer(10);  
  6.   interger2 = new Integer(50);  
  7.   i = 5;  
  8.   j = 9;  
  9.   System.out.println("Before Swap, Interger1 is " + interger1);  
  10.   System.out.println("Before Swap, Interger2 is " + interger2);  
  11.   swap(interger1, interger2);  
  12.   System.out.println("After Swap Interger1 is " + interger1);  
  13.   System.out.println("After Swap Interger2 is " + interger2);  
  14.   System.out.println("Before Swap i is " + i);  
  15.   System.out.println("Before Swap j is " + j);  
  16.   swap(i, j);  
  17.   System.out.println("After Swap i is " + i);  
  18.   System.out.println("After Swap j is " + j);  
  19.  
  20.   StringBuffer sb = new StringBuffer("I am StringBuffer");  
  21.   System.out.println("Before change, sb is <" + sb + ">");  
  22.   change(sb);  
  23.   System.out.println("After change sb is <" + sb + ">");  
  24.  }  
  25.  
  26.  public static void swap(Integer ia, Integer ib) {  
  27.   Integer temp = ia;  
  28.   ia = ib;  
  29.   ib = temp;  
  30.  } 

這很好解釋,對于基本類型諸如int,傳遞進(jìn)去的是存放int值的“內(nèi)存單元”的一個(gè)copy,所以函數(shù)swap里面的int和外面的int根本就不是一個(gè)東西,當(dāng)然不能反射出去影響外面

的int。而對于對象類型,我們同樣可以這樣認(rèn)為,C++函數(shù)參數(shù)傳遞進(jìn)去的是存放對象類型的指針的“內(nèi)存單元”一個(gè)copy(雖然Java里面沒有指針的概念,但這并不妨礙我們理解)。這樣,在swap函數(shù)里面,對其指針本身的值做任何操作當(dāng)然不會影響外面的Integer,因?yàn)閕nterger1和interger2的“內(nèi)存單元”里面的值是不變的,其指向的對象類型也是沒有變的。

然后這里需要說明一個(gè)問題,就是StringBuffer這種類型的對象了。因?yàn)槠鋬?nèi)容是可以改變的,所以change函數(shù)里面的“指針”通過類似“*”的操作,改變了StringBuffer對象的本身,就顯而易見了。(StringBuffer對象本身只有一個(gè)副本)然后說C++了,里面的基本類型的諸如int的值傳遞大家都了然于胸,就不在這里廢話了。

然后另一種值傳遞可以稱為指針引用傳遞(pass-by-value argument of pointer)(這個(gè)類似上文說的Java中的對象類型的值傳遞),可以通過*操作,改變指針指向的值。示例程序如下,一看便知:

  1. #include<iostream.h> 
  2.  
  3. int main(){  
  4.  void test(int*, const char*);  
  5.  int i = 1;  
  6.  int* iptr = &i;  
  7.  cout<<"Before pass-by-value:"<<"\n\n";  
  8.  cout<<"i = "<<i<<", It's value of i"<<endl;  
  9.  cout<<"&i = "<<&i<<", It's address of i and value of iptr"<<endl;  
  10.  cout<<"*iptr = "<<*iptr<<", It's value of i"<<endl;  
  11.  cout<<"iptr = "<<iptr<<", It's value of iptr and address of i"<<endl;  
  12.  cout<<"&iptr = "<<&iptr<<", It's address of iptr-self"<<"\n\n";  
  13.    
  14.  test(iptr, "pass-by-iptr");  
  15.  
  16.  test(&i, "pass-by-&i");  
  17.  
  18.  return 0;  

這里的引用(reference)說的明白一些,就是C++函數(shù)參數(shù)被傳遞參數(shù)的一個(gè)別名,或者更直接的理解就是被傳遞參數(shù)自己了,只是名字不同而已。那么既然自己都被pass過去了,那當(dāng)然可以在function里面為所欲為了。

【編輯推薦】

  1. 簡介學(xué)習(xí)C++總結(jié)之談
  2. 對C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語言真的還有市場價(jià)值?
  5. C++類庫設(shè)計(jì)的基本構(gòu)思與方法

【編輯推薦】

  1. 簡介學(xué)習(xí)C++總結(jié)之談
  2. 對C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語言真的還有市場價(jià)值?
  5. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來源: 新京報(bào)
相關(guān)推薦

2023-11-23 12:47:03

C++函數(shù)參數(shù)

2023-11-17 14:10:08

C++函數(shù)

2009-08-13 17:30:30

C#構(gòu)造函數(shù)

2009-08-28 15:57:56

C#線程傳遞參數(shù)

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2010-01-21 14:28:03

C++靜態(tài)成員函數(shù)

2011-06-11 21:36:44

C#C++

2009-11-17 09:07:55

靜態(tài)構(gòu)造函數(shù)

2010-02-03 14:36:47

C++仿函數(shù)

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-27 13:38:29

C++ Sum函數(shù)

2010-01-20 10:19:55

C++數(shù)組

2010-02-03 15:46:15

C++函數(shù)傳遞

2011-07-20 13:47:14

CC++

2021-03-29 15:32:31

Python函數(shù)參數(shù)

2025-03-19 10:26:12

Python參數(shù)開發(fā)

2021-03-03 10:00:52

Python函數(shù)Python基礎(chǔ)

2010-02-04 17:49:04

C++參數(shù)傳遞

2009-06-01 08:48:19

作用域變量作用域對象作用域
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 狠狠躁18三区二区一区 | 国产一区二区中文字幕 | 91极品视频| 日韩在线视频一区二区三区 | 99久久久无码国产精品 | 男女污污网站 | 91免费入口 | 亚洲成人一区 | 久久精品a | 欧美一级二级在线观看 | 国产精品99久久久久久www | 天天澡天天狠天天天做 | 亚洲精品视频在线观看免费 | 影音av | 亚洲精品成人av | 日韩在线国产精品 | 日韩欧美不卡 | 国产区精品在线观看 | 羞羞免费网站 | 亚洲精选一区二区 | 亚洲精品乱码久久久久久按摩观 | 久久久久免费精品国产 | 欧美精品一区二区三区在线四季 | 精品久久久久久亚洲精品 | 99热播精品| 亚洲午夜av久久乱码 | 久久久久国产一区二区三区四区 | 色吧综合| 91私密视频| 国产一区精品在线 | 精品一二区 | 一区精品视频在线观看 | 日韩视频免费看 | 国产精品揄拍一区二区久久国内亚洲精 | 国产三级日本三级 | 久久久久久亚洲精品 | 欧美日韩一 | 国产成人精品一区二 | 日韩中文久久 | 成人福利视频网站 | 4hu最新网址 |