昆明网络公司网站,工作态度和责任心句子,pr效果做的好的网站有哪些,wordpress怎么加入播放器c关键字 命名空间
在C/C中#xff0c;变量、函数和后面要学到的类都是大量存在的#xff0c;这些变量、函数和类的名称将都存在于全局作用域中#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化#xff0c;以避免命名冲突或名字污染#xff…c关键字 命名空间
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的.
#includestdio.h
int rand 10;
int main()
{printf(%d\n, rand);return 0;
}当我们没有包含rand函数的头文件时,这个是没有任何问题的因为定义的全局变量不会冲突。 #includestdio.h
#includestdlib.h
int rand 10;
int main()
{printf(%d\n, rand);return 0;}现在包含头文件的话 #include stdlib.h c语言没法解决这样的命名冲突问题所以c提出了namespace来解决。
命名空间定义
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员。
#includestdio.h
#includestdlib.hnamespace ggw
{struct node{int p1;struct node* next;};}
namespace zjw
{struct node{int p1;struct node* next;};}
int main()
{struct ggw::node t;struct zjw::node p;return 0;}解决了命名冲突问题
#includestdio.h
#includestdlib.hnamespace ggw
{struct node{int p1;struct node* next;};int min 5;}
namespace zjw
{struct node{int p1;struct node* next;};int min 10;}
int main()
{struct ggw::node t;struct zjw::node p;printf(ggw中的%d\n,ggw::min);printf(zjw中的%d\n, zjw::min);return 0;}使用不同的命名空间可以将同一个变量区分开比如说ggw中的min和zjw中的min
命名空间可以嵌套
namespace zjw
{struct node{int p1;struct node* next;};namespace ret{int min 10;}}
int main()
{struct ggw::node t;struct zjw::node p;printf(ggw中的%d\n,ggw::min);printf(zjw中的%d\n, zjw::ret::min);return 0;}这里会多套一层多加了一层作用域 1.当定义两个头文件里的变量包含在一起时也会出现变量重复定义相当于一个工程里面有两个组分别进行工程的不同部分当两个组用同一命名时候就可以用到命名空间了。 2.当两个命名空间同名时编译器会将两个合并成一个命名空间。 命名空间的使用
namespace ggw
{struct node{int p1;struct node* next;};int a 3;int b 4;int c 5;
} 1.加命名空间名称及作用域限定符 int main()
{printf(%d\n,ggw::a);return 0;}2.使用using将命名空间某个成员引入 using ggw::b;
int main()
{printf(%d\n, b);return 0;}相当于将ggw命名空间中的b变量展成全局的虽然理解不太对以后再修改 展开的话再定义一个全局变量会出现重定义。 3.使用using namespace 命名空间名称引入。 using namespace ggw;int main()
{printf(%d\n, a);printf(%d\n, b);printf(%d\n, c);return 0;}相当于将ggw命名空间中的所有变量展成全局的虽然理解不太对以后再修改不建议全部展开
c输入和输出
#includeiostream
using namespace std;
int main()
{cout hello world endl;}std是C标准库的命名空间名C将标准库的定义实现都放到这个命名空间中 如果不使用using namespace std的话那就要加上该函数所在的命名空间作用域
#includeiostream
//using namespace std;
int main()
{std::cout hello world std::endl;}说明 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时必须包含 iostream 头文件以及按命名空间使用方法使用std。cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含 iostream 头文件中。是流插入运算符是流提取运算符。使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。C的输入输出可以自动识别变量类型 自动识别变量类型
#includeiostream
using namespace std;
int main()
{int a;float b;double c;cin a;cin b;cin c;cout a endl;cout b endl;cout c endl;
}不用向c语言printf找变量类型了。 std命名空间的使用惯例 std是C标准库的命名空间如何展开std使用更合理呢 在日常练习中建议直接using namespace std即可这样就很方便。using namespace std展开标准库就全部暴露出来了如果我们定义跟库重名的类型/对 象/函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模 大就很容易出现。所以建议在项目开发中使用像std::cout这样使用时指定命名空间 using std::cout展开常用的库对象/类型等方式。 缺省参数
缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时如果没有指定实 参则采用该形参的缺省值否则使用指定的实参。
#includeiostream
using namespace std;
void print(int c50)
{cout c endl;}
int main()
{print(10);print();}当函数有传参数过去时就用传过去的形参如果没有传过去的形参采用该形参的缺省值。
缺省参数分类
全缺省参数
void print(int c50,int b20,int a65)
{cout c endl;cout b endl;cout a endl;}半缺省参数
void print(int c,int b20,int a65)
{cout c endl;cout b endl;cout a endl;}缺省参数可用来初始化比如栈的初始化。 当初始化栈没有参数时使用缺省参数。 半缺省参数必须从右往左依次来给出不能间隔着给缺省参数不能在函数声明和定义中同时出现缺省值必须是常量或者全局变量C语言不支持编译器不支持