C++的using namespace std表示什么意思?为什么C语言没有这句话
是命名空间的意思,这样编译器在编译的时候相当于每个变量都是 命名空间+变量名,这样就可以在不同命名空间里,起同样的变量名,防止变量名用尽或者冲突。C语言没有命名空间,C和C++其实是两门语言,尽量按照他们是两门不同语言的思路来学习比较好。
C语言中的#include 跟C++中using namespace std;有什么区别
using namespace std是C++的一个标准命名空间
可以自己定义命名空间,如:
using namespace aa;
C++引入命名空间主要是用来解决不同文件中全局变量的重名问题
比如一般大型的项目开发是由多个人一起完成的,每个人编写自己的一部分
最后再由一人把这些别人编写好的程序引用过来使用
例:
A的文件中定义了int k;B的文件中也定义了int k;而C要把A和B的文件同时引用过
来使用,他在使用全局变量k时就会发生错误。系统无法辨别他要使用的是A中的还是
B中的。
如果A和B在编写过程中都定义了自己的命名空间并把int k放在其中
A:
namespace A
{
int k;
}
B:
namespace B
{
int k;
}
这时C引用时就要加上空间名,A::k B::k就解决了全局变量的重名冲突的问题
而C语言是没有命名空间的
请教c语言和C++的命名空间问题
从技术上说,其实没有iostream.h这样的东西——标准化委员会在简化非C标准头文件时用iostream取代了
它。必须知道的是,如果编译器同时支持 iostream和iostream.h,那头文件名的使用会很微妙。例如,
如果使用了#include iostream, 得到的是置于名字空间std下的iostream库的元素;如果使
用#include iostream.h,得到的是置于全局空间的同样的元素。
在全局空间获取元素会导致名字冲突,而设计名字空间的初
衷正是用来避免这种名字冲突的发生。
iostream 里的所有内容被封装在 std 命名空间内,iostream.h 里的则没有,所以,如果 #include
iostream,就需要 using namespace std; 如果是 #include
iostream.h,就不必这样。iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout
但在iostream里面,它所定义的东西都在名字空间std里面,所以你必须加上 using namespace std才能使用cout
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好
多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。
c支持命名空间吗
支持。
命名空间在1995年被引入到c标准中,通常是这样定义的:命名空间定义了新的作用域。它们提供了一种避免名称冲突的方法。c中的命名空间通常用于避免命名冲突。尽管命名空间在最近的c代码中广泛使用,但大多数较旧代码都不使用此工具。
特点说明
在一个给定作用域中定义的每个名字在该作用域中必须是唯一的,对庞大、复杂的应用程序而言,这个要求可能难以满足。这样的应用程序的全局作用域中一般有许多名字定义。由独立开发的库构成的复杂程序更有可能遇到名字冲突。
像其他名字一样,命名空间的名字在定义该命名空间的作用域中必须是唯一的。命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义。
命名空间名字后面接着由花括号括住的一块声明和定义,可以在命名空间中放入可以出现在全局作用域的任意声明:类、变量、函数、模板以及其他命名空间。