補充:數組java與c++的異同

首先得記住一點:Java中的數組,是個對象。也就是說,你不能聲明一個數組,你只能聲明一個指針。這個指針指向一個對象,這個對象表明一個數組。數組

Java代碼中的以下聲明:數據結構

int  students[];函數

至關於C++代碼:spa

 

即聲明瞭一個指向數組對象的指針,數組元素爲int。3d

其中Array爲用戶自定義類型,模板參數表明元素類型:指針

 

數組元素能夠是int:對象

 

能夠是指向對象的指針:blog

 

還能夠是指向另外一個數組對象的指針繼承

 

 

 

 

以上這些C++代碼,在Java中有更簡潔的寫法,以下:io

 

或者以下形式:

int  students1[];

Student  students2[];

int  students[][];

Student  students4[][];

聲明指向數組對象的指針時,能夠無論數組中包含的元素個數(即使指定了,也是聾子的耳朵),但真的產生數組時,必須指定元素個數:

 

這就至關於C++中

 

聲明的時候不須要指定元素個數:

 

真正產生的時候須要指定元素個數:

 

爲何咱們上面用C++來解釋Java代碼時,用了用戶自定義的類Array?C++不是自己就有數組嗎?

C++自己的數組,聲明跟建立分不開——聲明時即建立。

 

除非是作函數的形參

 

此時元素個數寫跟不寫一個樣

 

但這種寫法其實就是下邊這種寫法

 

即students7的真實類型不是指向數組的指針(在Java中,這樣寫students7就是指向數組的指針),而是指向數組第一個元素的指針。C++的數組看上去跟Java的數組如出一轍,但其實,差異大了。

我以爲C++從C語言那裏繼承的歷史包袱——用指向數組第一個元素的指針表明指向整個數組的指針的作法,真是lowB到家了。如同用指向鏈表第一個結點的指針表明整個鏈表這個數據結構同樣lowB。

lowB:low  Byte

關於C語言數組指向數組第一個元素的指針的關係:decay的概念

相關文章
相關標籤/搜索