1.整理思维导图
2.有以下定义,说明哪些量可以改变哪些不可以改变?
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;:指向字符常量的指针,可更改指针本身,但不能更改所指向的字符内容。
const (char *) p;:与const char*p相同
char *const p;:指向字符变量的常量指针,不能通过指针更改指向地址,但可以更改所指向的字符内容。
const char* const p;:指向字符常量的常量指针,既不能通过p指针更改指向地址,也不能改变所指向的字符内容。
char const *p;:指向字符常量的指针,类似于第一种情况。也就是说,可以更改指针本身,但不能更改所指向的字符内容。
(char *) const p;:指向常量地址的字符指针,不能改变指针本身,但可以通过指针更改所指向地址上的字符。
char const* const p;:指向字符常量的常量指针,既不能通过p指针更改指向地址,也不能改变所指向的字符内容。此处const修饰符的顺序可以稍作修改,如const (char const*) p;。
3.总结命名空间使用时的方式和注意事项
- 命名空间的定义格式为:
namespace namespace_name {
// 命名空间内的定义
}
-
命名空间的名称可以由多个标识符组成,用作命名空间的名称要有意义,便于理解。
-
命名空间内可以包含变量、函数、类、结构体等定义,这些定义都属于该命名空间,可以在该命名空间内直接使用。
-
可以通过
using
关键字来引入某个命名空间,这样就可以在当前作用域内使用该命名空间内的定义。 -
同一命名空间内的名称不能重复定义,但不同命名空间内的名称可以相同。
-
可以通过
namespace
定义嵌套命名空间,在使用时需要指定完整的命名空间路径。 -
命名空间的名字空间外还可以使用,因此应该避免在全局命名空间内定义过多的名称,以免与其他库或代码发生冲突。
-
在头文件中声明命名空间时应该避免使用
using
关键字,因为头文件可能被多个源文件引用,会导致名称冲突。 -
通常情况下,在命名空间内定义的名称应该使用命名空间限定符来进行访问,在全局作用域内定义的名称则不需要。