C++ Primer Plus 6 笔记(2)

第4章

1.求数组元素个数的一种方法:num=sizeof 数组名/sizeof (元素类型)

2.确定字符串所需的最短数组时,别忘了将结尾的'\0'计算在内。表面可以无,内存必须有。

3.'S'表示字符常量,"S"表示两个字符(字符S和\0)组成的字符串,"S"实际上表示的是字符串所在的内存地址。在两个字符串常量中加入(空格、制表符和换行符)对整体没有影响

4. strlen()只计算可见的字符长度,而不把空字符计算在内,因此数组的长度不能短于strlen(数组名)+1

5.cin.getline(name,ArSize)与cin.get(name,ArSize)两个函数都是读取一行输入,直到到达换行符,随后getline()丢弃换行符,get()将换行符保留在队列。cin.getline(name,ArSize)==cin.get(name,ArSize).get()

6.string类#include<string>:能实现赋值拼接附加等操作。求长度int len1=str.size();int len2=strlen(str);

7.原始(raw)字符串,字符表示的就是自己。将"( 和 )”用作定界符,如果要表示字符"(,加上"+*(字符)+*"         

如:cout << R"(Jim "KIng" Tutt use "\n" instead of endl.)" << '\n';

       Jim "King" Tutt use \n instead of endl

      cout << R"+*("(Who wouldn't?)",she whispered.)+*" << endl

      (Who wouldn't?)",she whispered.

8.共用体的用途之一:当数据项使用两种或多种格式,可节省空间。

9.枚举常被用来定义相关的符号常量,而不是新类型,例如用枚举定义switch语句中使用的符号常量,如:enum{red,orange,yellow,green,blue,violet,indigo}  为0-6

10.int* 是一种类型,指向int的指针

11.指针在运行阶段分配未命名的内存以存储值——new运算符。为一个数据对象(可以是结构,也可以是基本类型)获得并分配内存的通用格式为 typeName* pointer_name = new typeName;

12.delete:不要用delete释放不是new分配(声明变量)的内存,不要用delete释放同一个内存块两次,如果是new[ ]为数组分配内存,则应使用delete[ ]释放

13.数组名被解释为其第一个元素的地址,而对数组名使用地址运算符时,得到的是整个数组的地址

14.使用new来创建数组以及使用指针来访问不同的元素,只要把指针当做数组名对待即可

15.将字符串赋值给数组,只是复制地址,应使用strcpy()或strncpy(),而不是赋值运算符来将字符串赋给数组

16.用new创建(指针类型)动态结构时,不能将成员运算符句点用于结构名,因为没有名称,只是知道地址,应该用箭头成员运算符—>(指针访问结构体内部用箭头)

17.模板类vector和array:#include<vector>  #include<array>

vector可以在运行阶段调整长度,声明方式为vector<typeName> vt(n_elem),其中n_elem为常量变量都可以。

array对象长度固定,声明为array<typeName,n_elem>arr,其中n_elem只能为常量。数组必须逐个元素复制数据,但array对象可以赋给另一个对象

 

posted @ 2019-03-16 16:03  yawenw  阅读(94)  评论(0编辑  收藏  举报