补充:数组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的概念

相关文章
相关标签/搜索