网站建设实施计划包括哪些,做平面设计去哪个网站找素材好,网站建设的原则有哪些方面,济南房管局官网初识c 命名空间命名空间的定义命名空间的使用 输入输出流缺省参数引用引用定义常量的引用引用的使用场景做函数参数引用做返回值 命名空间
命名空间的定义
在c语言中会有下面问题 上述代码中#xff0c;全局变量rand 可能会命名冲突#xff0c;如下图 此时编译失败… 初识c 命名空间命名空间的定义命名空间的使用 输入输出流缺省参数引用引用定义常量的引用引用的使用场景做函数参数引用做返回值 命名空间
命名空间的定义
在c语言中会有下面问题 上述代码中全局变量rand 可能会命名冲突如下图 此时编译失败全局变量rand和stdlib.h发生命名冲突。冲突可能有两种
与系统库冲突与其他人冲突 这就是c语言的一个不足所以在c中引入了命名空间。 引入命名空间后又出现了新的问题 输出结果不是0似乎是个随机数。但是他并不是随机数他是库中函数rand的打印那么怎么才能打印命名空间域中的rand呢 就需要使用命名空间限定符 使用了命名空间作用符 elk::rand就可以访问命名空间内部。
命名空间的使用
命名空间的全部展开
using namespace std;全部展可能会有以下冲突问题 此时同时展开 elk bin出现了 命名冲突所以在使用展开时在工程中不能全部展开。
输入输出流
在c语言中 printf的使用很麻烦。在c中引入了 cout cin 极大的加速了编程效率。在后面我们会对coutcin进行深入探讨。下面演示如何使用
cout的输出 cout可以看做终端 cin 可以看做从终端输入
缺省参数
缺省参数是声明函数和参数提前为函数参数赋值一个参数。 缺省参数注意事项
缺省参数从左往右依次给出调用缺省函数时必须从左往右连续填充。
引用
引用定义
引用不是重新定义一个变量而是给变量取一个别名。
一个变量可以有多个别名一个别名只能对应一个变量引用不是指针。
常量的引用
常量的引用必须是权限的缩小如下面程序 在类型转换中显示类型转换中 此代码就会报错原因如下 将代码修改为具有const性质的
引用的使用场景
做函数参数
引用的优点之一是可以避免拷贝形参。
#include time.husing namespace std;struct A { int a[10000]; };
void TestFunc1(A a) {}
void TestFunc2(A a) {}
void TestRefAndValue()
{A a{};// 以值作为函数参数size_t begin1 clock();for (size_t i 0; i 10000; i)TestFunc1(a);size_t end1 clock();// 以引用作为函数参数size_t begin2 clock();for (size_t i 0; i 10000; i)TestFunc2(a);size_t end2 clock();// 分别计算两个函数运行结束后的时间cout TestFunc1(A)-time: end1 - begin1 endl;cout TestFunc2(A)-time: end2 - begin2 endl;
}int main()
{TestRefAndValue();return 0;
}运行结果如下
引用做返回值
引用做返回值容易引起野引用问题。
int Add(int a, int b)
{
int c a b;
return c;
}
int main()
{
int ret Add(1, 2);
Add(3, 4);
cout Add(1, 2) is : ret endl;
return 0;
}
因为c是临时变量临时变量在出函数栈帧会自动释放。所以不能还回临时变量。