现在的位置: 首页 > 综合 > 正文

c中和java中数组的区别

2014年01月16日 ⁄ 综合 ⁄ 共 642字 ⁄ 字号 评论关闭

  对于原语类型的数组,如int[]   a,在C里面只要这样定义之后就可以用a[i]使用了,但是在JAVA里面是不行的,必须用int[]   a   =   new   int[LENGTH];来为数组分配空间。这里的a更应该看成C里面的指针,它和C里面的int*   a是一样的,因为这个a(C里面的)也要先malloc一个空间之后才可以用。  

  对于对象数组,则要“两次分配”,如:  
  Object[]   obj   =   new   Object[2];  
  obj[0]   =   new   Object();  
  obj[1]   =   new   Object();  
  因为数组首先是一个句柄,而这个句柄指向的2个空间里面又是存储着两个指向Object类型的句柄。  
  而C里面不完全相同:  
  struct   Object{};  
  struct   Object*   obj   =   (struct   Object   *)malloc(2   *   sizeof(struct   Object));  

   
  其实他们的原理大至是相同的。只不过JAVA里数组的内存分配是在堆里面的,必须用new   来分配,而C里面是在栈里面分配的,定义的时候会自动分配。  

  在《Thinking   in   JAVA》中有更详细的介绍。

 

 

java在声明数组的时候不能加数量的.只能初始化的时候加
int[]  a  =  new int[3];  或
int  a[]  =  new int[3];  都行
c语言中,声明的时候加不加数量都可以
int a[3] = {1,2,3};
int a[]  = {1,2,3};

抱歉!评论已关闭.