驻扎在简书也算好久了,偶然间的相逢便爱上了这里的一切,简洁的面板,清爽的主线。可以在这无人相识的世界里尽情地释放激情,随心所欲,无拘无束,渐渐从少年变成码农,从愤青变成了吃瓜群众。我简书的主号的文章写太杂,特开此小号与大家共勉。在主号中我是想写就写,没有规划,但在此小号中我想每日一更,专注做技术分享,可又能坚持多久呢???期待中。。。废话不多说,上今天所学知识点
1、命名空间
在c语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。命名空间可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。
命名空间的定义使用关键字 namespace,后跟命名空间的名称,为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称
namespace A
{
int a = 3;
};
namespace B
{
int a = 6;
}
cout << A :: a <<endl;
cout << B :: a <<endl;
可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。
namespace A
{
int a = 3;
};
using namespace A;
namespace B
{
int a = 6;
}
//using namespace B; 这里 A 与 B 只能是任意一个,若同时存在输出会发生二义性,编译报错
cout << a <<endl;
2、输出 char *的变量
char *p = "hello world";
cout << p << endl; //此时错误
错误原因是赋值两边的类型不一致
const char *p = "hello world";
cout << p << endl; //此时正确
输出结果是: hello world
额... 竟然是 p 所指对象的内容
const char *p = "hello world";
cout << (void *)p <<endl; //猜猜此时会输出什么?
输出结果是: 0x80487c0
哈哈 此时竟然是 p 所指对象的地址
网友评论