类比的思想学习数组和指针,c++提供类似于vector和迭代器的低级复合类型——数组和指针。与vector相似,数组可以保存某一种类型的一组对象;而他们的区别在于,数组的长度固定,数组一经创建就不允许添加新元素。指针则可以像迭代器一样用于遍历和检查数组中的元素
C++应尽量使用vector和迭代器类型,避免使用低级的数组和指针。设计良好的程序只有在抢到速度时才在类实现的内部使用数组和指针
4.1 数组
定义和初始化
数组的位数必须用值大于等于1的常量表达式定义,非const变量以及要到运行阶段才知道其值的const变量不能用于定义数组的维数
- 在函数体外定义的内置数组,其元素初始化为0;
- 在函数体内定义的内置数组,其元素无初始化;
- 不管数组在哪定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则需要提供显示初始化
显示初始化的数组不需要指定数组的维数值,编译器会根据列出的元素个数来确定数组的长度
int a[] = {1,2,3};
不允许数组直接复制或赋值,数组一经定义就不允许再添加新元素
在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t
字符数组
char ca1[] = {‘a‘, ‘b‘, ‘c‘, ‘\0‘} ; // 一个C风格的字符串,等价于 char ca2[] = "abc" 二者的字符数组大小都是4
char ca2 = "abc";
要注意:虽然char ca2[] = "abc" 内容只有三个字符,由于这种定义是C风格字符串的定义法所以系统会自动在对应的字符数组后面加上 ‘\0‘
时间: 2024-10-05 02:31:58