Primer (六)
来源:互联网 发布:网络拓扑结构图片 编辑:程序博客网 时间:2024/05/20 06:25
数组
9. c_str()
1. 数组也是容器,和vector的区别在于不能动态增长,必须初始化时指定长度,可以存放任何对象。
2. 引用不是对象,所以没有存放引用的数组。
3. 初始化数组长度必须使用常量:
int a = 10;const int b = 10;int c[a]; // 错误,a不是常量int c[b]; // 正确4. 用字符串初始化数组时,最后一位默认为空字符。
char s[] = "abcde"; // 自动添加最后的空字符char s[5] = "abcde"; // 错误,最后空字符没有地方char s[] = {'a','b','c'}; // 正确,不是字符串,没有最后的空字符5. 复杂的数组定义
int *p[10]; // 定义10个指针的数组int (*p)[10] = &arr; // 定义一个指针,指向一个10个int元素的数组arrint (&r)[10] = arr; // 定义一个引用,引用一个10个int元素的数组arrint *(&r)[10] = arr; // 定义一个引用,引用一个数组arr,arr包含10个int指针判断复杂数组,需要从内向外,从右向左。
6. 数组与vector、string一样,都可以使用范围for和下标两种方式遍历。
7. 数组没有迭代器,指针相当于迭代器,每个数组名就是指向第一个元素的指针,可以移动,作为迭代器使用。
int a[10];int *e = &a[10]; // e指向a的最后一个元素的下一个for (int *b = a; b != e; ++b) { cout<<*b; // e不可以解引用}int *b = begin(a); // 返回数组头指针int *e = end(a); // 返回数组尾指针,最后一个元素的下一个int *p = a + 10; // p不可以解引用int *p = a + 20; // 错误,越界auto n = end(a) - begin(a); // 得到数组长度,类型为ptrdiff_ta[3] = {1,2,3};int *p = &a[2]; // p指向&a[3]int *q = p[-1]; // 所有指向数组元素的指针,都可以直接当做数组用,这里的下标是可以为负数的8. 赋值
int a[5];int b[5] = a; // 错误,不允许数组初始化数组b = a; // 错误,不允许数组赋值数组vector<int> v(begin(a), end(a)); // 但是,可以用数组赋值vector,传入两个指针即可
9. c_str()
string s = "abc";char *p = s; // 错误,s是string不能赋值指针char *p = s.c_str(); //正确,c_str()将一个string转化成以空字符结尾的char数组,并且返回指向头元素的指针,这样p就指向了char数组的头元素char c = {'a', 'b', '\0'};string s = c; // 正确,char数组可以赋值string
c_str()返回一个const char* 临时创建一个string转化的char数组,并指向这个临时数组。
string s = "abc";
const char *p = s.c_str(); // string转化成char[],必须先转化成const char*
cout<<*p<<p<<endl; // a abc *p是首元素,p是整个字符串
char c[] = "abcde";char *p = c + 1; // p指向b *p='b'string s = p + 1; // s是从c开始到数组结束的字符串cout<<*p<<endl; // bcout<<s<<endl; // cde
10. 尽量使用vector和迭代器,代替数组和指针。尽量使用string代替数组表示的旧式字符串。
阅读全文
0 0
- Primer (六)
- Primer学习(六)
- C++ Primer 笔记六
- c++Primer,六,语句
- c++ primer(六)
- C++Primer读书笔记(六)
- C++primer笔记(六)
- c++ primer读书笔记(六)
- C++ Primer笔记 六 函数
- c++primer 第五、六章
- 《C++Primer Plus》学习笔记(六)
- C++ Primer 中文版 学习笔记(六)
- C++ Primer笔记(六)函数
- C++ Primer Plus的若干收获--(六)
- C++ Primer 笔记+习题解答(六)
- C++primer(六) 数组和指针
- C++ primer plus读书笔记(六)
- C++ primer 六 范围for语句
- eclipse+Scala+Maven安装
- hibernate实现原理及配置
- 【C语言】【unix c】值结果参数
- JavaScript语言内部机制概念整理(一)
- Ubuntu系统相关问题
- Primer (六)
- 一:TypeScript入门
- Java移位操作符
- JavaScript预解析详解
- 在同一个类中调用另一个方法没有触发 Spring AOP 的问题
- H5页面,部分 Android手机点击number电话号码/成串数字时候,会跳转到其他页面造成404错误,如何解决?
- PHP面对对象
- mybatis实现原理及配置
- mysql常用操作