在c ++中,数组的标识符是一个指针,在数组的java标识符中是一个引用变量(实际上是一个指针)。
假设有一个数组a
和b
。如何在java中允许此操作:
a = b; //the reference that 'b' holds will be copied to 'a' so both a and b point to the same array
但在C ++中,相同的操作将被视为无效的分配。
如果a
和b
都是c ++中的指针,为什么b
保留的地址不会被复制到a
?
答案 0 :(得分:3)
数组不是真正的指针,它们只是降级为指针(指向它们包含的第一个元素。)它们实际上是数据的blob。您无法在C ++中更改数组的位置,因为内存中没有存储指针的位置;它只是结构或堆栈框架的偏移量。
答案 1 :(得分:0)
在C ++中,数组引用是const
指针,但在Java中它们既不是指针也不是隐式常量。