java:
int [] arr1={1,2,3,4,5},arr2=new int [5];
arr2=arr1;
这样不会报错。
c++:
int arr1[5]={1,2,3,4,5},arr2[5];
arr2=arr1;
这样就不可以,只能是
int p1,p2;
p1=arr1;
p2=p1;
这样才可以。
为什么java可以数组相互赋值呢?
你好~
Java中的数组是引用类型,引用类型与C中的指针概念上有一些类似。
当 arr2=arr1; 的时候,并不是将数组复制了,而只是将arr2指向了arr1,也就是说,arr2和arr1是同一个数组了,而之前的arr2代表的数组就丢弃了。
与之作用类似的C代码大致是这样:
int *arr1 = {1,2,3,4,5}, *arr2;C语言中的数组事实上是不可变指针(const *),因此不能被赋值。