我尝试在java中使用整数数组,代码如下:
public static void main(String[] args) {
int[] array = testArray(100);
System.out.println(array.length);
for(int i = 0; i < 100; i++)
System.out.println(array[i]);
}
public static int[] testArray(int size){
int[] array = new int[size];
for(int i = 0; i < size; i++)
array[i] = i;
return array;
}我还在C++中测试了一个整数数组,如下所示:
#include<iostream>
using namespace std;
void getArray(int size)
{
int array[size];
for(int i=0; i<size; i++)
array[i]=i;
}
int main()
{
getArray(10);
return 0;
}我总是用这两个片段得到正确的答案,为什么?因为我认为数组的长度对于java、C和c++这样的语言来说不能是可变的。
发布于 2012-03-28 10:15:58
这三种语言是不同的,不同语言的特征也会有所不同。特别是,在C99中,您可以在堆栈中定义变量的数组(对于那些主要使用Java语言编程的人,这通常用于引用不是编译时间常量的大小,而不是数组将更改大小)。
在C++中,你不能在堆栈中声明它们(GCC允许这样做,对模仿C99行为的语言做了一个不一致的扩展),但你可以用给定大小的new动态分配内存,并将指针存储在一个变量中。
在Java语言中,您永远不能在堆栈中创建数组,您所能做的就是使用new动态分配数组并存储引用。
int size = 100;
// C99
int data[size];
// C++
// int data[size]; // error, but allowed by gcc
int *data = new int[size];
// Java
int[] data = new int[size];发布于 2012-03-28 09:54:20
Java和C是不同的语言。默认情况下,标准C中只允许动态分配(malloc/calloc)的东西在Java语言中是允许的,因为Java语言中的所有数组分配都是动态的;Java语言中缺少显式堆栈分配的概念。
发布于 2012-03-28 09:55:10
Java中数组的长度不是可变的。它是在创建数组时定义的(即在运行时动态定义),但之后不能更改。
此外,每个数组都有一个length属性,该属性可用于使for循环能够遍历任意长度的数组:
for(int i = 0; i < array.length; i++)
System.out.println(array[i]);https://stackoverflow.com/questions/9900132
复制相似问题