数组
数组定义:
形式:类型说明符 数组名[常量表达式];
在编译时,数组定义中的下标必须确定。
int size = 50;
int array[size]; //会发生编译错误,因为不能用变量来描述数组定义中的元素个数。
const int size = 50;
int array[size]; //OK
初始化数组:
初始化数组的值的个数不能多于数组元素个数;初始化数组的值也不能通过跳过逗号的方式来省略,这在C中是允许的,但在C++中不允许。
int array[5] = {1,2,3}; //OK
int array[5] = {1,,2,3,4}; //Error
初始化值的个数可少于数组元素的个数,此时,前面的按序初始化相应值,后面的初始化为0(因启动了初始化).
初始化字符数组:
char array[10] = {"hello"}; //初始化时,系统自动在数组没有填值的位置用'\0'补上。
char array[10] = "hello";
char array[10] = {'h','e','l','l','o','\0'}; //此种初始化方式与上面等价。
char c[] = {'h','i','\0'}; // 数组长度为3.
char c[] = {'h','i'}; //数组长度为2。
对于字符串的初始化,要注意数组实际分配的空间大小是字符串中字符个数加上末尾的'\0'结束符。
char ch[] = "how are you";
sizeof(ch)的结果为12;而strlen(ch)的结果为11.
省略数组的大小只能在有初始化的数组定义中。
向函数传递数组:
无论何时,将数组作为参数传给函数,实际上只是把数组的地址传给函数。
int ia1[50];
memset( ia1, 0, 50*sizeof(int)); //将数组设置全0.
(memset函数可以一字节一字节地把整个数组设置为一个指定的值。它把数组的起始地址作为第一个参数,第二个参数是设置数组每一个字节的值,第三个参数是数组的长度,注意是字节数而非元素个数。)

浙公网安备 33010602011771号