【共读Primer】18.<3.5> 数组 Pag…
2018-08-10 11:12:04来源:博客园 阅读 ()
存放相同的类型,大小声明后不可改变,性能上优于vector。
数组声明
a[d]; // a是名称。d是维度,也就是数组大小,必须是常量表达式
数组的元素会被默认初始化
数组的元素为对象,所以与vector相同,不存在以引用为元素的情况。
数组的显示初始化
const unsigned sz = 3; // 用来定义数组的维度,必须是常量 int ial[sz] = {0,1,2}; // 含有3个元素的数组,元素值分别时0,1,2 int a2[] = {0,1,2}; // 维度是3的数组 int a3[5] = {0,1,2};// 等价于 a3[] = {0,1,2,0,0} string a4[3] = {"hi", "bye"};// 等价于 string a4[] = {"hi", "bye", ""} // int a5[2] = {0,1,2};// 错误 初始值太多
字符数组应该具有零结尾
char c1[] = {'C', '+', '+'}; // 列表初始化,没有空字符,虽然编译器不会报错,但是直接当作字符串使用会有问题 char c2[] = {'C', '+', '+','\0'}; // 列表初始化,含有显示的空字符 char c3[] = "C++"; // 自动添加表示字符串结束的空字符 //const char a4[6] = "Daniel"; // 错误:没有空间放空字符,实际长度应该是7
数组间是不允许使用“=”进行拷贝和赋值的。
一些复杂的指针,指针的数组,数组的指针,数组的引用
int *ptrs[10]; // ptrs是含有10个整形指针的数组 //int &refs[10] ; // 错误 不存在引用的数组 int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组 int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
访问数组元素
数组的索引从零开始,如果一个数组包含10个元素,那么索引就是0-9.
数组的索引类型是size_t, 这是一个机器相关的无符号类型
索引值的合理范围必须由程序员来保证,这也是很多错误产生的原因
数组和指针
编译器会将数组的名字替换成数组首元素的指针
指针就是数组的迭代器。
inr arr[] = {0,1,2,3,4,5,6,7,8,9}; int *ptrs[10]; // ptrs是含有10个整形指针的数组 //int &refs[10] ; // 错误 不存在引用的数组 int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组 int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组 int *p = arr; // 数组名称是首元素指针 ++p; // p指向arr[1], 数组的第二个元素。 int *e = &arr[10]; // 数组arr的末尾元素的下一个元素地址 for(int *b = arr; b != e; ++b) { cout << *b << endl; //输出arr的所有元素 } // 通过标准库函数来获得首尾地址用来遍历整个数组 //int *pbeg = begin(arr); int *pend = end(arr); for(int *pbeg = begin(arr); pbeg != pend; ++pbeg) { cout << *pbeg << endl; //输出arr的所有元素 }
指针的运算
int *ip = arr; int *ip3 = ip + 3; // 指针可以加减一个整数,意义是对指针进行数组内移动,+为向后,-为向前,移动的数量为运算符号后的数量。 auto n = ip3 - ip; // 两个指针相减,所得的类型是prtdiff_t,一个带符号类型。得数是两个原素间的位置差值。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ Primer抄书笔记(二)——变量和基本类型(下) 2020-02-25
- C++ Primer 抄书笔记(二)——变量和基本类型(上) 2020-02-24
- C++ Primer 抄书笔记(一) 2020-02-20
- Ubuntu18.04安装openCV4.1.2 2019-12-14
- 【c++primer练习】 typedef与指针、常量和类型别名 2019-11-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash