21天学通C++_Day4

0、迭代器

昨天晚上3G移动通信实验的时候,需要写一些简单的C程序,用到for循环的时候,发现在不同的for循环中,若定义标识符相同的变量名时,会有报错,环境是VC6;

可是一想到在for语句声明的迭代器的作用域为for循环,故产生疑惑?究竟是语法问题还是编译器问题?

结果发现是编译器的问题:

在VS2012中,声明相同名称的叠加器是被允许的,而在VC6中是不被允许的,会报错,如下图:

ok,解决完了昨晚的遗留问题,开始今天的学习。

1、带默认值的函数参数

函数声明时:double Area(double InputRadius, double PI=3.14);

函数调用时:Area(Radius, NewPI); or  Area(Radius);

2、函数重载

名称、返回参数相同,但参数不同的函数。在程序中,若需要使用不同参数调用具有特定名称和返回类型的函数时,函数重载很有用。

例如:

double Area(double Radius);

double Area(double Radius,double Height);

3、数组作为参数的函数

void Display(int Numbers[], int Length);

void Display(char Characters[], int Length);

4、按引用传递参数

我们都知道,函数调用时,实参把参数值传给了形参,即把实参的值拷贝给了形参,函数运行了以后,实参的值是不变的。

但是,有时候,希望函数修改的值在函数外也可用,此时就可以把形参的类型声明为引用。

void Area(double Radius, double& Result);

5、内联函数

使用inline关键字,要求将函数的内容直接放到调用它的地方,以提高代码的运行速度,避免函数调用的微处理器跳转开销,但这会使代码膨胀

6、lambda函数

暂时看不懂,后面再研究。

7、递归函数不终止,结果?

程序将不断执行下去,而且递归函数调用将占用越来越多的栈空间,而栈空间有限,最终程序因栈溢出而崩溃。

原文地址:https://www.cnblogs.com/Big-Rabbit/p/4370068.html