github上的每日学习 5
函数
一、 引用(&)的理解与使用
众所周知,函数与主函数之间的值传递一直都是十分恼人的,这里分为单向传递和双向传递。
这里学习了C++中的一种方法实现值传递,这就是引用类型。
它的意义是这样的,举一个例子,事先有一个变量叫a,这是我又把a取一个名字叫b,这时,a、b其实是一个存储空间里的一个值,如果当a在主函数里使用,b在特定函数里使用,这样就可以实现值的传递(其实也不算传递,就是更改而已)。
格式:
int &b=a;//a又命名为b
练习的代码及结果:
#include<iostream>
using namespace std;
int main()
{
void swap(int& x, int& y);
int a, b;
cin >> a >> b;
swap(a, b);
cout << a << ' '<< b;
return 0;
}
void swap(int& x, int& y)
{
int t;
t = x;
x = y;
y = t;
}
二、 含可变参数的函数
对它的理解,当你在写一个函数的时候肯定不会想要只是!!仅仅!!在一个特定的地方用到它,你希望,啊,比如吧,当你想要一个函数输出整个程序不同地方的错误反馈时,你提供的给这个函数参数个数不一定相同,这时候你就需要拥有可以变参数个数(长度)的函数,这就是含可变参数函数的一个应用场景。
实现这种函数主要有两种方法:
1、 应用initializer_list
当你的所有实参类型相同,可以传递一个名为initializer_list的标准库类型。这是一种标准库类型,用于表示某种特定类型的值的数组,该类型定义在同名的头文件中。
以下截图是它提供的一些操作:
2、 编写可变参数的模板。
这是在实参的类型不同时。
三、 内联函数(inline)
这就是当我们在调用简单函数的时候能够提高运行效率的机制,是编译器帮我们实现的。具体的步骤,就是在调用简单函数的时候要涉及到函数体的替换,参数传递,控制转移这些步骤浪费时间,应用inline函数后,就告诉了编译器,把这简单的函数直接复制到原函数里成为它其中的一段代码,这样节省时间。
注意:
1、 内联函数里不能有循环语句和switch语句
2、 对于内联函数的定义必须在内联函数第一次被调用之前
3、 对内联函数不能进行异常接口声明
代码练习:
#include<iostream>
using namespace std;
const double PI = 3.1415;
inline double calArea (double radius)
{
return PI * radius * radius;
}
int main()
{
double r;
cin >> r;
double area;
area=calArea(r);
cout << area;
return 0;
}