Java、C#、C++定义数组区别

来源:互联网 发布:网络安全工程师 编辑:程序博客网 时间:2024/06/05 03:47

(1)Java

一维数组 1) int[] a; //声明,没有初始化

2) int[] a=new int[5]; //初始化为默认值,int型为0

3) int[] a={1,2,3,4,5}; //初始化为给定值

4) int[] a=new int[]{1,2,3,4,5}; //同(3) int[] a=new int[5]{1,2,3,4,5}; //错误,如果提供了数组初始化操作,则不能定义维表达式

5) int[] a; a=new int[5]; //正确,同(2)一样

int[] a; a={1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用,如(3)

6) int a[]; a[0]=1; //错误,因为数组没有初始化,不能赋值 a[1]=2;

二维数组 1) int[][] a; //声明,没有初始化

2) int[][] a=new int[2][3]; //初始化为默认值,int型为0

3) int[][] a={{1,2},{2,3},{3,4}}; //初始化为给定值 int[][] a={{1,2},{2,3},{3,4,5}}; //没有错,数组空间不是连续分配的,所以不要求每一维的大小相同

4) int[][] a=new int[2][]; a[0]=new int[3]; //a[0]其实就是一个数组 a[1]=new int[4]; //每一维的大小可以不一样;

5) int[][] a=new int[][]{{1,2},{2,3},{3,4,5}}; //同(3) int[] a=new int[5]{{1,2},{2,3},{3,4,5}}; //错误,如果提供了数组初始化操作,则不能定义维表达式

int[][] a=new int[2][]; a[0]={1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用

6) int[][] a=new int[2][]; a[0][1]=1; //错误,第二维没有初始化,不能赋值,java.lang.NullPointerException异常

总结: 1.二维就是数组的数组,里面的数组大小不要求一样

2.不管一维还是二维,在使用前(赋值,访问)必须初始化,可以用new默认初始化,也可以用数组常量初始化

 

1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行; (一般用指针实现动态数组,返回数组首地址)

2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;

3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。

(2)C#

 

数组概述

C# 数组从零开始建立索引,即数组索引从零开始。C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起注意。

声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C# 中,将方括号放在标识符后是不合法的语法。

int[] table; // not int table[];

另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分。这使您可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何。

int[] numbers; // declare numbers as an int array of any size

numbers = new int[10]; // numbers is a 10-element array

numbers = new int[20]; // now it's a 20-element array

声明数组

C# 支持一维数组、多维数组(矩形数组)和数组的数组(交错的数组)。下面的示例展示如何声明不同类型的数组:

一维数组:

int[] numbers; 

多维数组:

string[,] names; 

数组的数组(交错的):

byte[][] scores; 

声明数组(如上所示)并不实际创建它们。在 C# 中,数组是对象(本教程稍后讨论),必须进行实例化。下面的示例展示如何创建数组:

一维数组:

int[] numbers = new int[5]; 

多维数组:

string[,] names = new string[5,4]; 

数组的数组(交错的):

byte[][] scores = new byte[5][]; 
for (int x = 0; x < scores.Length; x++)  
{ 
scores[x] = new byte[4]; 
} 

还可以有更大的数组。例如,可以有三维的矩形数组:

int[,,] buttons = new int[4,5,3]; 

甚至可以将矩形数组和交错数组混合使用。例如,下面的代码声明了类型为 int 的二维数组的三维数组的一维数组。

int[][,,][,] numbers; 
初始化数组 

C# 通过将初始值括在大括号 ({}) 内为在声明时初始化数组提供了简单而直接了当的方法。下面的示例展示初始化不同类型的数组的各种方法。

注意如果在声明时没有初始化数组,则数组成员将自动初始化为该数组类型的默认初始值。另外,如果将数组声明为某类型的字段,则当实例化该类型时它将被设置为默认值 null

一维数组

int[] numbers = new int[5] {1, 2, 3, 4, 5}; 
string[] names = new string[3] {"Matt", "Joanne", "Robert"}; 

可省略数组的大小,如下所示:

int[] numbers = new int[] {1, 2, 3, 4, 5}; 
string[] names = new string[] {"Matt", "Joanne", "Robert"}; 

如果提供了初始值设定项,则还可以省略 new 运算符,如下所示:

int[] numbers = {1, 2, 3, 4, 5}; 
string[] names = {"Matt", "Joanne", "Robert"}; 

多维数组

int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} }; 

可省略数组的大小,如下所示:

int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} }; 

如果提供了初始值设定项,则还可以省略 new 运算符,如下所示:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6} }; 
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} }; 

交错的数组(数组的数组)

可以像下例所示那样初始化交错的数组:

int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

可省略第一个数组的大小,如下所示:

int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

-或-

int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} }; 

请注意,对于交错数组的元素没有初始化语法。

 

(3)C++

 

1.一维数组的定义与初始化
1.1定义一维数组
int a[3];
该定义表示一个整型数组,共有3个元素,下标分别为[0],[1],[2]。
1.2一维数组初始化
可以用下面几种方式进行初始化。
①在定义数组时分别对数组元素赋初值。
int a[3]={0,1,2};
②只给一部分元素赋值。
int a[3]={0,1};
这表示只给前面两个元素赋初值,后面的元素值默认为0。
③在对全部数组元素赋初值时,可以不指定数组长度。
int a[3]={0,1,2};
可以写成
int a[]={0,1,2};
在第二种写法中,花括号中有3个元素,系统就会据此自动定义a数组的长度为3。但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。
2.二维数组的定义与初始化
2.1定义二维数组
int a[3][4];
改定义表示一个3x4(3行4列)的整型数组。可以把该二维数组看作:
|---a[0]:a[0][0],a[0][1],a[0][2],a[0][3]
a |--a[1] :a[1][0],a[1][1],a[1][2],a[1][3]
|--a[2] :a[2][0],a[2][1],a[2][2],a[2][3]
C++中,二维数组种元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,在存放第二行元素,依次往下。
2.2二维数组初始化
可以用下面几种方式进行初始化。
①分行给二维数组赋初值。
int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
②将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
③只对部分元素赋初值。
int a[3][4]={{1},{2},{4}};
1 0 0 0
2 0 0 0
4 0 0 0
int a[3][4]={{1},{0,2},{0,0,4}};
1 0 0 0
0 2 0 0
0 0 4 0
int a[3][4]={{1},{3,2}};
1 0 0 0
3 2 0 0
0 0 0 0
int a[3][4]={{1},{},{9}};
1 0 0 0
0 0 0 0
9 0 0 0
④如果对全部元素赋初值,则定义数组时对第一维长度可以不指定,但第二维长度必须指定。
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
可以写成
int a[][4]={0,1,2,3,4,5,6,7,8,9,10,11};
在定义时也可以对部分元素赋初值而省略第一维的长度,但应分行赋初值。
int a[][4]={{0,0,1},{},{0,9}};
0 0 1 0
0 0 0 0

0 9 0 0

原文链接:http://www.cnblogs.com/Yogurshine/archive/2012/12/29/2839238.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 烧退了浑身疼怎么办 下午睡久了头疼怎么办 一天睡久了头疼怎么办 在家躺久了头疼怎么办 4周多儿童睡眠差怎么办 6岁儿童睡眠差怎么办 四年级的孩子不会写作文怎么办 四年级的孩子写不出作文怎么办? 欠了三万网贷怎么办 打完篮球浑身疼怎么办 在部队当兵意外死亡了怎么办 派派没有体力瓶怎么办 e记账登录不上怎么办 洁净净化区湿度高怎么办 政府测量土地少算了面积怎么办 北京武警欠我钱怎么办 被小混混打了怎么办 农保地建房子怎么办 WOW7.3到8.0橙装怎么办 90后离婚有孩子怎么办 90后的我们该怎么办 越南和中国结婚怎么办结婚证 改革怎么看走留怎么办事业怎么干 改革怎么看走留怎么办工作怎么干 军改怎么看我该怎么办 改革怎么办我该怎么干 改革怎么看 走留怎么办 腿又粗又弯怎么办 假发发量太多了怎么办 剃了发际线后悔怎么办 在外面遇到坏人抢劫怎么办 请事假单位不批怎么办 捷普请假不批怎么办 钉钉请假不审批怎么办 钉钉请假未审批怎么办 员工事假+工作履责怎么办 员工请事假不批怎么办 哺乳起员工一直请事假怎么办 请公休公司不批怎么办 辞职信交了不批怎么办 辞职年假没有休完怎么办