【C-Primer-Plus读书笔记】第10章:数组和指针
数组
初始化数组
只存储单个值的变量有时也称为标量变量,而存储多个值的数组,C使用新的语法来初始化数组,如下:
int main(void) { int powers[8] = {1,2,4,6,8,16,32,64}; /* 从ANSI C开始支持这种初始化 */ }
如上所示,用以逗号分隔的值列表(用花括号括起来)来初始化数组,各值之间用逗号分隔。在逗号和值之间可以使用空格。
- 注意,通常的做法是用符号常量事先声明好数组的大小,以后修改数组大小只需要修改符号常量即可
- 同普通变量一样,使用
const
声明和初始化数组可以把数组设为只读。 - 同普通变量一样,在使用数组钱,必须先给他们初始化赋值,否则编译器使用的值是内存相应位置上现有的值,是不确定的。
- 当初始化列表中的值少于数组元素个数时,编译器会把剩余的元素都初始化为0(注意,上面提到的是完全没有初始化,这里是初始化了部分);当初始化列表中的值多于数组元素个数时,编译器会将其视为错误,其实,可以省略方括号中的数字,让编译器自动匹配数组大小和初始化列表中的项数。
- 当使用
sizeof
对数组求值时(sizeof
运算符给出它的运算对象的大小,以字节为单位),结果是整个数组的大小(以字节为单位),可以用sizeof
对数组单个元素求值(以字节为单位),整个数组大小除以单个元素大小就是数组元素的个数。