1、数组下标:
(1)在定义时必须明确。
①只能用正整数或const常量,静态或全局变量不可以;例如:const int length=5; int array[length];
②(特) 在new时可以用变量做下标。例如:int * array = new int[variable];
(2)在初始化时:
①一维数组,可略; 例如:int array[];
②二维数组,其一维可略,二维不能略。例如:int array [][3]={1,2,3,4,5,6};
(3)在作参数时:
①一维数组,略;(写了也被略去) 例如:void func(int array[]){}
②二维数组,一维略,二维不能略。 例如:void func(int array[][5]){}
2、下标与初始化元素:
(1)下标省略的,每个元素都应写出; 例如:int array[]={1,2,3,4,5};
(2)下标明确的,可只写前面部分元素,后面的按默认值: 例如:int array[5] = {1,2};
①全局数组、静态数组,默认值为0;
②局部数组,默认值不确定。
(3)元素之间不可以用逗号跳过。 例如:int array[5] = {1,2,,3,4};//error
3、字符数组:
(1)字符数组=字符串
(2)其末尾字符为' /0 '
(3)其长度=有效字符数+1,在定义字符数组长度时切记。
(4)初始化方法
① char arr[6] = {"hello"};
② char arr[6] = "hello"; //与第①种相同,一般使用这一个
③ char arr[6] = {'h','e','l','l','o','/0'}; //主要在特殊字符时使用
4、二维数组初始化:
(1)二维数组中,第1维表示行,第2维表示列。
(2)初始化时,可以每行使用1个{},比如int arr[][3]={{1,2,3},{4,5,6}};
也可以只使用1个{},比如int arr[][3]={1,2,3,4,5,6}; 与上面句子等效。
5、要定义很大的数组时,应建立全局或静态类型的数组。因为局部数组使用栈区,大数组会导致栈溢出。
6、数组长度计算:
(1)sizeof
方法:sizeof(数组名)/ sizeof(数组类型名)
说明:数组占用字节除以数组类型所占字节,结果为数组元素个数
(2)strlen
说明:strlen,求字符串有效长度
方法:strlen(字符数组名) //结果为字符数组有效字符长度,不包括末尾的' /0'
注意:
当数组作为函数参数传递时,数组名代表的是数组的首址,而非数组内容,故无法使用sizeof和strlen;
同时,在传址时,应提供2个参数:1个是数组名,代表数组首地址;1个是数组元素个数,以便确定传递的次数。
7、数组相当于指针——常量指针。
(1)对于指向数组的指针的定义,与指向普通变量的指针定义不同:
int a=20;
int p = &a; //对普通变量定义时,前面要加上&
int b[20];
int pi = b; //对数组定义时,前面不用加&:因为数组本身相当于指针
(2)对于int *p = a[3]来说,a,&a,&a[0]等价,都是数组a的首元素地址。
8、数组是常量,不可修改:如对于数组a[2]来说,a++,++a,a--,--a,a+=3,a-=6等操作都是不允许的。
-
顶
- 0
-
踩