C#、Java、C、C++初始化数组过程和比较

来源:互联网 发布:mac c66是什么色 编辑:程序博客网 时间:2024/05/17 23:10

与C语言、C++有所不同,C#语言初始化数组有三种方法:

第一种:直接赋值,这种方法在知道变量取值的情况下,经常使用。如下:

//一维数组int[] arrayI = {1,2,3};String[] arrayS = {"one","two","three"};char[] arrayC = {'a','b','c'};……<span style="color:#3366FF;">//二维数组</span>int[,] arrayII = {{1,2},{3,4},{5,6}};//此时,arrayII[0,0]=1,arrayII[0,1]=2,arrayII[1,0]=3,arrayII[1,1]=4,array[2,0]=5,arrayII[2,1]=6

注意:在这种情况下,不能在【】中填入数组的大小;

在二维数组情况下,数组间的数的个数必须相同,如{1,3}与{1,2,3}是不符合要求的,因此不能放在同一个数组里。

第二种:使用New运算符进行赋值,如下:

//一维数组String[] arrayS ;arrayS = new string[3]{ "one", "two", "three" };……或者String[] arrayS ;<pre name="code" class="html">arrayS = new string[]{ "one", "two", "three" };
……
//二维数组
int
[,] array5;array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // OK//array5 = {{1,2}, {3,4}, {5,6}, {7,8}}; // Error
注意:在这种情况下,【】可以选择不填或者填入大小;

第三种:一一赋值,这种方法简单但是造成代码臃肿,不建议使用如下:

//一维数组string[] arrayS = new string[3];arrayS[0] = "one";arrayS[1] = "two";arrayS[2] = "three";……<span style="color:#000099;">//二维数组二维数组和一维数组赋值过程一样。</span> 
第四种:循环赋值,这种方法是第三种方法的特例,一般在赋值有规律的值时使用,如下:

//一维数组int[] arrayI = new int[3];for(int i=0;i++;i<3){        arrayI[i] = i;}<span style="color:#3333FF;">//二维数组int[,] arrayII = new int[2,3];for(int i=0;i++;i<2){    for(int j=0;j++;j<3){        arrayII[i,j]=j;    }}</span>
Java语言初始化数组的三种方法:

第一种静态赋值:直接赋值,如下:

String arrayS[] = new String[]{"one","two","three"};  或者:<pre name="code" class="html"><pre name="code" class="java">String arrayS[] = {"one","two","three"}; ……

第二种动态赋值:一一赋值,如下

String arrayS[] = new String[2];          arrayS[0] = "one";          arrayS[1] = "two"; 
第三种动态赋值:循环赋值,这种赋值方式经常用于有规律的值的赋值,如下:

int arrayI = new arrayI[3];for(int i =0;i++;i<3){        arrayI[i] = i;}……<span style="color:#006600;"><span style="font-size:14px;"><strong>注:Java二维数组的初始化过程与C#一样,只是[]的位置不同而已。</strong></span></span>

C语言和C++ 语言初始化的方法:

一维数组初始化:
标准方式一: int value[100]; // value[i]的值不定,没有初始化
标准方式二: int value[100] = {1,2}; // value[0]和value[1]的值分别为1和2,而没有定义的value[i>1]
                                 // 则初始化为0
指针方式: int* value = new int[n]; // 未初始化
           delete []value;  // 一定不能忘了删除数组空间
二维数组初始化:
标准方式一: int value[9][9]; // value[i][j]的值不定,没有初始化
标准方式二: int value[9][9] = {{1,1},{2}}; //value[0][0,1]和value[1][0]的值初始化,其他初始化为0
指针方式一: int (*value)[n] = new int[m][n];
             delete []value; // n必须为常量,调用直观。未初始化
指针方式二: int** value = new int* [m];
             for(i) value[i] = new int[n];
             for(i) delete []value[i];
             delete []value; // 多次析构,存储麻烦,未初始化
指针方式三: int * value = new int[3][4]; // 数组的存储是按行存储的
             delete []value; // 一定要进行内存释放,否则会造成内存泄露
  
多维数组初始化:
指针方式: int * value = new int[m][3][4]; // 只有第一维可以是变量,其他几维必须都是常量,否则会报错
           delete []value; // 一定要进行内存释放,否则会造成内存泄露
注:参考“做自己的快乐人”的一篇博文“C++数组操作”,地址:点击打开链接

综合比较:

1、 C#语言和C、C++、Java语言的最大区别在于:C#语言标记数组大小的[]一般放在数据类型名之后,比如int[3]、String[]等等,而C++、C和Java一般至于变量名之后;

2、 四种语言都能直接赋值;

3、 C++和C与Java、C#的不同操作还有一点是,C++、C可以通过指针进行赋值。

0 1