数组

数组定义

形式:类型说明符  数组名[常量表达式];

在编译时,数组定义中的下标必须确定。

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函数可以一字节一字节地把整个数组设置为一个指定的值。它把数组的起始地址作为第一个参数,第二个参数是设置数组每一个字节的值,第三个参数是数组的长度,注意是字节数而非元素个数。)

 

posted @ 2017-04-04 10:41  手可摘星晨  阅读(167)  评论(0)    收藏  举报