1、 数组定义必须制定维数值(显式初始化例外,下面讨论),且维数值必须是常量表达式,也就是说必须是能在编译时刻计算出的值,非const的变量不能用作数组维数。
2、 同变量一样,全局数组定义后系统会自动初始化,局部数组则不会。
数组也可以显式初始化,此时可以不制定维数值,编译器会根据初始化的元素个数确定维数值:
int pi[] = {1,2,3};
如果这种情况下制定维数值,那么初始化列表提供的元素个数不能超过这个值。
相反,如果指定的维数大于元素个数,那么其余元素置为0。
字符数组有两种显式初始化方法,但有区别:
char ccc1[] = {'P','l','u','s'};
char ccc2[] = "Plus";
以上两个数组不是相同的,ccc1维数是3,ccc2维数是4(多一个终止空字符)。
3、一个数组不能被另外一个数组初始化,也不能赋值给另外一个数组(这两句话是否一个意思?)。
不允许声明引用数组。
4、数组标识符代表数组第一个元素的地址。
pi 和 & pi [0] 是等价的,都返回数组的第一个元素的地址。
* pi 和 pi [0] 是等价的,都返回数组的第一个元素。
同样, pi +1和&pi[1]都表示第二个元素的地址。
*(pi+1) 和pi[1]都表示第二个元素。
注意 ,*(pi+1)和 *pi+1 两个表达式有不同含义,因为解引用操作符的优先级比加法运算符高。