C#.net int[] arr1 ;和 int[] arr1= new int[10] ;不定长数组定义问题

int[]arr1;是不是声明了一个不定长数组,与int[]arr1=newint[10]声明了一个十个元素的数组是否有区别直接使用第一种声明也没出错啊inti=0;in... int[] arr1 ; 是不是 声明了一个不定长数组,
与int[] arr1= new int[10] 声明了一个十个元素的数组 是否有区别
直接使用第一种 声明也没出错啊

int i =0;
int byteSum1;
byte [] byteSum2;
byte byteSum ;
byteSum1 = Convert.ToInt32(i + 0xAB + 0xCD + 0x2E + 0x00);
byteSum2 = BitConverter.GetBytes(byteSum1);
byteSum = byteSum2[0];

不是说数组是定长的吗, 为什么使用时没报错。
展开
 我来答
freeeeeewind
2015-10-05 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1346万
展开全部

关键在于你对“定长数组”的理解有偏差。

1)以下的声明

byte[] byteSum2;
int[] arr1;

只是说明了byteSum2是一个字节数组,arr1是一个整型数组;根本没有“定长”的含义!

2)有了上面数组声明,执行以下语句后

byteSum2 = BitConverter.GetBytes(byteSum1);
arr1 = new int[10];

变量 byteSum2 “指向”了由BitConverter.GetBytes(byteSum1)创建的字节数组;

变量 arr1“指向”了由 new int[10] 实例化而来的整型数组;

3)“定长”的含义是指 BitConverter.GetBytes(byteSum1)、new int[10]语句所创建数组的元素的数量是“固定”的。也就是,一旦创建完毕,数组元素的数量是固定不变的!

4)更进一步,以下代码有助于理解“定长”数组的概念

int[] arr;
// 先让arr指向一个10个元素的数组
arr1 = new int[10];
// 再让arr指向一个3个元素的数组
arr = new int[] {10, 20, 30};
// 再让arr指向一个300个元素的数组
arr = new int[300];
benben239
2015-10-05 · TA获得超过864个赞
知道小有建树答主
回答量:612
采纳率:100%
帮助的人:493万
展开全部
int[] arr1是声明的一个指针
new int[10]才是开辟了10个实际的空间,可以使用的空间

int[] arr1 = new int[10] 表示用arr1指向这10个空间,以后你就可以利用arr1这个名字使用这10个空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式