C++ primer阅读之变量与指针

第二章 变量和基本类型

1. 显式访问全局变量,用操作符::

2. 引用和指针是复合类型。

3. 引用必须初始化;一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象;引用必须在创建时被初始化。指针可以在任何时间被初始化。引用不是对象,所以不能定义引用的引用。

4. void*,任意类型的指针。只保存指向变量的地址,并不知道地址长度,因为不知道变量类型。因此也不能解引用。

5. 理解复合类型的声明。变量的定义包括一个基本数据类型和一组声明符,int *p = &i, &r=i; *和&都是类型修饰符,是声明符的一部分。我们也可以把空格写在类型修饰符与变量名之间,如int* p,p1。但是此时基本数据类型还是int, 所以p1的类型是int。

6. 指向指针的引用。int i=42; int *p; int *&r = p; 从右到左读有利于分析它的真实含义。

7. const对象一旦创建后其值就不可改变,因此必须初始化。默认地,const对象只在当前文件中有效。希望共享在多个文件中地话,需要加extern。

8.常量引用仅仅对引用可参与地操作做了限制,对其对象本身是不是一个常量未作限定。int i=0; const int &r2 = i; int &r1=i;

r1=0;(正确) r2=0(错误);

9. 要想存放常量对象地址,必须使用指向常量的指针。 const int i = 1; const int *cptr = &i;

10. 总结:指向常量的引用或者指针,不过是它们自以为是罢了,它们觉得自己指向了常量,自觉不去改变所指向对象的值。但是对象本身不一定是常量。

11. const 指针, int i=0; int *const p = &i, 从右到左阅读。其存放的地址不可变,但其指向的对象可变。

12. 常量表达式。const int a = get_size();a不是常量表达式,因为get_size()在运行是才能得到。constexpr int a = get_size(); 此时a是常量表达式。constexpr是C++11新特性。

13. constexpr 定义指针时,constexpr仅对指针有效,与所指对象无关(注意以const的区别)。

14. typedef,新标准提出using。typedef char *pstring, 实际上pstring是char*的别名。

15. int i = 0, *p=&i; decltype(*p) c; 错误,c的类型是int&,必须初始化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值