- 整理思维导图
- 有以下定义,说明哪些量可以改变哪些不可以改变?
const char *p;
const (char *) p;
char *const p;
const char* const p;
char const *p;
(char *) const p;
char const* const p;
- const char *p; 中 p 所指向的字符数据是不可以改变的,但是 p 自身可以改变。
- const (char *) p; 和 1.是等价的,指向字符数据的指针是不可以改变的,但是指针自身可以改变。
- char *const p; 中 p 自身是不可以改变的,但是 p 指向的字符数据是可以改变的。
- const char* const p; 中 p自身和所指向的字符数据都是不可以改变的。
- char const *p; 和 1.是等价的,指向字符数据的指针是不可以改变的,但是指针自身可以改变。
- (char *) const p; 中指针 p 自身不可以改变,但是指向的字符数据可以改变。
- char const* const p; 中指针 p 自身和所指向的字符数据都是不可以改变的。
- const 修饰谁,谁不变
- 总结命名空间使用时的方式和注意事项
引入命名空间内的所有标识符:using namespace 命名空间名
局部引入部分命名空间中的标识符:using 命名空间名::标识符名
命名空间不同时全局引入两个命名空间,分别调用其中的变量
命名空间和标识符冲突时:使用使用命名空间名+域限定符解决,来标识使用哪一个命名空间
全局变量和命名空间冲突:使用命名空间名+域限定符,如果访问命名空间中的内容A::age
如果想要访问全局变量::age,
局部变量和命名空间冲突:默认访问局部变量,如果想访问命名空间中的内容,A::age
匿名空间:定义时没有写出命名空间名的就是匿名空间。(注意:如果全局变量和匿名空间中的变量重复,系统会把他们和并成一个变量,值以全局变量的准)
嵌套多个命名空间,并且定义了相同变量时,会采取就近原则引用