共同建设网站协议,seo 工具分析,网站头部设计代码,盐城建设企业网站一.C的命名原则namespace是指标识符的各种可见范围#xff0c;c的所有标识符都被定义在一个名为std的namespace中。1.iostream和iostream.h是两个不同的文件#xff0c;后缀为.h的头文件c标准已经明确提出不支持了#xff0c;早些的实现将标准库功能定义在全… 一.C的命名原则namespace是指标识符的各种可见范围c的所有标识符都被定义在一个名为std的namespace中。1.iostream和iostream.h是两个不同的文件后缀为.h的头文件c标准已经明确提出不支持了早些的实现将标准库功能定义在全局空间里声明在带.h后缀的头文件里c标准为了和C区别开也为了正确使用命名空间规定头文件不使用后缀.h。 因此1当使用iostream.h时相当于在c中调用库函数使用的是全局命名空间也就是早期的c实现2当使用iostream的时候该头文件没有定义全局命名空间必须使用namespace std这样才能正确使用cout。二 由于namespace的概念使用C标准程序库的任何标识符时可以有三种选择1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下 std::cout std::hex 3.4 std::endl;2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout std::hex 3.4 endl;3、最方便的就是使用using namespace std; 例如 using namespace std;这样命名空间std内定义的所有标识符都有效曝光。就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout hex 3.4 endl;因为标准库非常的庞大所以程序员在选择的类的名称或函数名 时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问 题。无数原有的C代码都依赖于使用了多年的伪标准库中的功能他们都是在全局空间下的。所以就有了iostream.h 和iostream等等这样的头文件一个是为了兼容以前的C代码一个是为了支持新的标准。命名空间std封装的是标准程序库的名称标准程序库为了和以前的头文件区别一般不加.h2.c命名空间的定义及使用语法c中名称可以是符号常量变量结构体类等为了避免在大规模的编程中标示符出现重定义c推出了namespace关键字可以更好地控制变量的作用域。std是c标准命名空间c中所有的标示符都被包含在其中它的使用有两种方法(1)在程序的最开头使用using namespace std;告知程序使用std命名空间此后可以使用std的标识符。2使用标识符时在前面加上std::标示他是来自于std空间的三c语言得命名空间与c的命名空间在c语言中只有一个全局命名作用域所有的全局变量共用一个作用域它的标识符可能发生冲突c提出了命名空间的概念全局作用域可以分为不同的命名空间不同的命名空间可以使用相同的名字。命名空间可以相互嵌套。使用范例/*定义一个命名空间namespaceA*/namespace namespaceA{ int a 10;};namespace namespaceB//定义命名空间B
{int a 1;namespace namespaceC //定义命名空间C{struct Teacher{int age;char name[10];}}
}int main(){ using namespcae namespaceA; using namespaceB :: namespaceC:: Teacher; printf(%d, a);//这个a是属于命名空间namespaceA的 printf(%d, namespaceB :: a); Teacher t1 { 3, aaa}; printf(t1.name %s, t1.name); printf(t1.age %d, t1.age); system(pause); return;} 转载于:https://blog.51cto.com/11631662/1852990