您的位置:首页 > 编程语言 > C语言/C++

c++ Primer学习笔记之第二章 变量和基本类型

2014-11-19 21:12 429 查看
1、 把负数转换成无符号数类似于直接给无符号数赋一个负值,结果等于这个负数加上无符号数的模。

2、 char 1个字节,float 4个字节,double 8个字节,int分为long int和short int,其中long int是4个字节,short int是2个字节。int为整数型,用于定义整数类型的数据,float为单精度浮点型,能准确到小数点后六位,double为双精度浮点型,能准确到小数点都十二位,char为字符型,用于定义字符类型的数据。

3、 以0开头的整数代表八进制数,以0x或者0X开头的代表十六进制。 P35

4、
单引号括起来的一个字符称为char型字面值,双引号括起来的零个或多个字符则构成字符串字面值。P36

5、 对象是指一块能存储数据并具有某种类型的内存空间。P39

6、 初始化和赋值的区别:初始化是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。 P39

7、 如果要在多个文件中使用同一个变量,就必须将声明和定义分离。此时,变量的定义必须出现在且只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,却绝对不能重复定义。 P41。

8、 如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示地初始化变量。 P41

9、 定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。引用不是对象,所以不能定义引用的引用。P46

10、引用的类型都要和之绑定的对象严格匹配。(例外:A在初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果能转换为引用的类型即可,尤其,允许为一个常量引用绑定非常量的对象、字面值,甚至是个一般表达式)而且,引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。P46

11、指针的类型都要和它所指的对象严格匹配。(例外:A、允许一个指向常量的指针指向一个非常量对象。)P47

12、把int变量直接赋给指针是错误的操作,即使int变量的值恰好等于0也不行。如int zero =0;pi=zero; P49

13、面对一条复杂的指针或引用的声明语句时,从右向左阅读有助于弄清楚它的真实含义。P53

14、const对象一旦创建后其值就不再改变,所以const对象必须初始化。 P53

15、对常量的引用不能被用作修改它所绑定的对象。P54

16、常量引用仅对引用可参与的操作做出了限定,对于引用的对象本身是不是一个常量未做限定,所以允许通过一些途径改变对象的值。P56

17、如果想要存放常量对象的地址,只能使用指向常量的指针。 P56

18、指针本身是一个常量并不意味着不能通过指针修改其所指对象的值,能否这样做完全依赖于所指对象的类型。P57

19、名词顶层const表示对象本身是个常量,名词底层const表示指针或引用等复合类型所指的对象是一个常量。P57

20、当执行对象的拷贝操作时,拷入和拷出的对象必须具有相同的底层const资格,或者两个对象的数据类型必须能够转换。P58

21、常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。字面值、用常量表达式初始化的const对象都是常量表达式。 P58、

22、在const声明中如果定义一个指针,限定符constexpr仅对指针有效,与指针所指的对象无关。P60

23、两种定义类型别名:A用typedef ,B用using

24、如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句产生不同的效果。例如:

typedef char* pstring;

const pstring cstr =0; cstr为指向字符的常量指针

另外如果直接定义 const char* cstr =0; cstr为字符常量的指针P61

25、使用auto声明多个变量时,该语句中所有的变量的初始基本数据类型都必须一样。

26、当引用被用作初始值时,真正参与初始化的其实是引用对象的值,此时编译器以引用对象的类型作为auto的类型;auto一般会忽略顶层const,同时底层const则会保留下来。

27、decltype是从变量和表达式推断得到类型。P63(需要继续琢磨!!!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: