数组的定义,初始化,及变长数组和const关键字
数组的定义:
通常用 type arr_name[]来表示一个一维数组。
同样二维数组 type_name[][]。
定义数组时[]可以放在类型后面也可以放在变量名后面。
数组的初始化:
- 静态初始化:指在定义时间同时指定数组元素内容。
示例代码如下:
int [] arr1 = {1,2,3,4,5};
String [] arr2 = {“tom”,"rose,“sum”};
静态初始化时不需要指定数组的大小,系统会根据指定的内容的数量自动分配大小。
- 动态初始化:在定义是首先通过new关键字开辟指定大小的储存空间,然后再为储存单元指定内容。
示例代码如下:
// 初始化一维数组:
int arr1[] = new int[3];
arr[1] = 0;
arr[2] = 1;
arr[3] = 2;
//初始化二维数组:
int [][] arr2 = new String[2][2];
arr2[0][0] = 1;
arr2[0][1] = 2;
arr2[1][0] = 3;
arr2[1][1] = 4;
当定义一个数组arr3[4] = {1,2};计算机会给后面的值全部赋值为0;
当定义一个数组为arr[4] = {};计算机给数组里面赋的值的是随机的。
动态初始化在开始就为数组定义了长度。
动态和静态的区别:动态初始化一开始就定义了数组的长度(此时已经分配内存)。
注:在使用一个数组之前必须初始化这个数组,否则计算机将会报错。
变长数组:
变长数组的定义:
例int sum(int rows,int cols, int arr[rows][cols]);// arr是一个变长数组。
注:两个形参要在数组定义之前说明。
可以省略原型中的形参名,但是在这种情况下,必须要用*来代替省略的维度。
例:int sum(int ,int ,int arr[][]);
该函数的定义如下:
int sum(int rows,int cols,int arr[rows][cols])
{
int r;
int c;
int tot = 0;
for(r = 0;r < rows; r++)
{
for(c = 0;c < cols; c++)
tot += arr[r][c];
return tot;
}
}
const关键字
有时需要把数组设置为只读。这样,程序只能从数组中检索值,不能把新值写进数组。要创建只读数组,应该用const关键字声明和初始化数组。
const int arr[5] = {20,21,22,23,24};
一旦使用 const定义后就不能改变其中的内容。
对形式参数使用:
int sum(const int arr[], int n)
{
int i;
int tot = 0;
for(i = 0; i < n; i++)
{
tot += arr[i];
return tot;
}
}
以上代码表示该函数不能修改arr指向的函数中的内容。如果函数不小心使用arr[i] ++ 的表达式,编译器会捕捉到错误,并生成一条错误信息。
const并不是要求原数组一定要是常量,而是在函数处理数组时将其视为常量,不可更改。