前言:
而今朋友们对“数组下标必须为整数吗”大概比较注意,小伙伴们都需要剖析一些“数组下标必须为整数吗”的相关资讯。那么小编也在网上汇集了一些对于“数组下标必须为整数吗””的相关文章,希望咱们能喜欢,咱们快快来了解一下吧!数组:是引用类型的数据结构;是一个存储同一数据类型元素有固定大小有顺序的集合;复杂数据类型的一种
数组的语法格式
//方式1数据类型[] 数组名 = new 数据类型[数组的长度];[]表示要声明的是一个数组//这里不是省略的意思数据名:就是为数组起一个要求符合变量的命名规则的名字new 数据类型[数据的长度] 表示在内存中开辟的数组长度//声明数组时一定是可以表示正整数长度的数据如//整形数字int,byte,或者可以转换为数组下标范围正整数的其他类型肉"0"等//长度必须有,即使长度为0//如 int[] nums = new int[0];开辟长度为0的数组new 后面的数据类型必须与[]前面的类型一致因为 数组声明时不存在隐式或显示类型转换//int[] nums=new float[0]; //因此 此数组格式声明错误 //==============================int[] numbers = new int[10];表示在内存开辟了10个可以存储int类型的空间这一组空间的名称叫 numbers数组中的numbers[下标]被称之为数组的一个变量数组中的每个变量又被称之为 元素可以通过下标或索引器访问数组的元素第一个元素的下标是0,最后一个元素的下标是9,也就是:数组的长度-1通过访问下标可以对每个元素进行赋值,修改与使用numbers[9]=10;为数组的元素numbers[9]赋值为10
//声明一个类型为int 名称为numbers 长度为10的 数组int[] numbers = new int[10];//通过下标为具体元素赋值numbers[0] = 1;numbers[9] = 10;//打印输出数组元素Console.WriteLine("numbers[9]={0}", numbers[9]);//通过下标修改具体元素的值numbers[9] = 100;//修改下标为9的元素其值变为100//打印输出数组元素Console.WriteLine("numbers[0]={0}", numbers[0]);Console.WriteLine("numbers[9]={0}", numbers[9]);Console.ReadKey();
数组名称,数组元素与元素的值在内存中的表现形式与关系
数组元素的赋值范围与数组的类型有关,与数组的长度无关
byte[] nums = new byte[258];//byte类型的范围为0-255 //声明数组长度 设置为258不会报错//赋值/使用时不报错的情况nums[258]=3;//与数组长度无关,即使声明数组长度为999999999//赋值/使用时报错的情况//超出byte的范围nums[0]=256;//与赋值范围有关 //=================================//不建议这么做 没意义byte[] nums = new byte[999999];byte数组常用于如文件流等
数组的注意事项
1 声明什么类型的数组,数组中只能存储什么类型范围内(数组类)的数据; 如int类型的数组,其元素值只能赋值int类型,不能为其赋值其他类型的数据(除非可以转换为int类型)
由图中(行号33)可以看出只能赋值显示(强制)类型转换的数据,不能赋值隐式类型转换的数据
2 各个类型的元素都有自己类型的默认值
数组元素的默认值就是基本数据类型各自的默认值;单个使用的规则:声明一>赋值一>使用,必须赋初始值;基本数据类型放置在复杂数据类型中可以不必赋初始值
//单个使用int num=6;//必须赋初始值后才能使用
复杂类型:1)枚举就是一个枚举成员的第一个(底层就是int类型,本例中) 2)结构与数组就是自己成员变量各个的类型的默认值
class Program { enum MyEnum { 男, 女 } struct MyStruct { public string name; public int age; } static void Main(string[] args) { //基本数据类型的默认值 int[] numbers = new int[1];//代表整形数值的与decimal类型 默认值为0 float[] fs = new float[1];//代表float,double 默认值为0.0 string[] s = new string[1];//代表string与object 默认值为null char[] cs = new char[1];//默认值为0或ASCII码表的第一个 bool[] bs = new bool[1];//默认值为false //复杂类型的默认值 MyEnum Gender; MyStruct Info; MyEnum[] gs = new MyEnum[3];//枚举类型数组 Student[] stus = new Student[3];//结构类型数组 }}
3 声明数组时必须确定数组的长度,长度一旦确定不可改变
上面数组的变形格式
//正确的格式int[] nums2;//声明数组类型的变量nums=new int[9];//比较常用//错误的格式int[] nums2=new nums;nums[9];
必须确定数组的长度:
1)声明数组时要确定该数组需要在内存中开辟多大的空间
2)数组在内存中开辟的是连续的一段存储空间
数组没有添加/删除元素的方法,因此长度无法改变;可以通过两个数组实现另一种意义的改变数组长度(了解即可)
//假设不想要某些数据int[] nums1 = new int[5];//只需要下标为0,2,4的数据有3个元素int[] nums2 = new int[3];//将需要的数据存储在新数组中nums2[0]=nums1[0];nums2[1]=nums1[2];nums2[2]=nums1[4];
4 使用下标访问元素时,下标也可以使用变量(必须在数组下标的范围内)
5 使用数组常见错误
1 数组元素所赋的值超出数组类型的范围,编程时VS会有提示,通过输入语句就会报错
2 赋值,访问时下标超出数组长度的范围
声明时的数字[255]表示数组长度是255,下标是0-254(长度-1)
另两种声明方式(了解即可)
//方式2 以元素个数定数组长度//声明一个长度为3的数组//等号右面一个大括号,括号中间每个元素用逗号隔开//[]前面是什么类型,{}里面就必须使用什么类型的表示方式书写元素//书写几个元素表示该数组长度就是多少int[] nums={1,2,3};string[] names={"zs","ls","ww"};//字符串数组 元素加双引号//声明了有5个元素的char类型数组char[] cs={'a','b','c','d','e'};//字符数组 元素加单引号//其他类型以此类推//=======================================//方式3 声明时就给元素赋值初始化元素的值//{ }在类或集合初始化时最常见//类似的语法一般称为语法糖//作用:简化编写代码int[] nums=new int[]{1,2,3};//声明了一个长度为3的int类型数组int[] nums=new int[3]{1,2,3};//[]中的长度可以省略//==========================//错误格式 []中确定了长度 但{}中元素多/少写//编程时VS有提示int[] nums=new int[3]{1,2};int[] nums=new int[3]{1,2,3,5};
反编译查看3种声明方式的区别
使用数组的益处:1)相当于一次声明多个数类型相同的变量 2)数组元素在内存的存储是连续的 3)可以使用循环进行操作
标签: #数组下标必须为整数吗