C语言数组的创建
方法一:全部不初始化
//方法一
int moths[12]; //创建一个数组,为int型,不初始化
//其可以抽象化为
typeName arrayName[arraysize]
typeName
就是上式中的int
arrayName
就是上式中的moths
12
就是上式中的12
其中对arraysize
有以下几点要求
- 它必须是整数如10、20
- 如果不是整数是变量,那么必须是被
const
修饰的变量 - 也可以是表达式常量如
8*sizeof(int)
总结起来就是 arraysize
的值在被编译的时候要是一个已知的值
方法二:部分初始化
float hotelTips[5]={5.0,2.5};
如果只对数组的一部分进行初始化,则数组的其它值会默认设置为0如上面初始化所示则有
hotelTips[0]=5.0
hotelTips[1]=2.5
hotelTips[3]=0.0
……
hotelTips[4]=0.0
方法三:全初始化但不指定数组长度
int things[]={1,2,3,4};
则编译器会默认things
的长度为4
方法四:全初始化并指定数组长度
int things[4]={1,2,3,4};
这个就是最完整的数组初始化方法了
C++11的关于数组的新特性
- 在初始数组的时候可以省略
=
double earnings[4] {1.2e4,1.6e4,1.1e4,1.7e4};
- 可以不在大括号内包含任何东西如下所示,这样所有元素都会被设置为0
float balances[100]{};
- 列表初始化禁止缩窄转换
long plifs[]={25,92,3.0};//not allowed
char slifs[4]{'h','i',1122011,'\0'};//not allowed
char tlifs[4]{'h','i',112,'\0'};//allowed
- 上述代码中第一条不能通过,因为将浮点型转换为整形是缩窄操作
- 第二条也不能通过,因为1122011超过了
char
的取值范围 - 第三条可以编译通过