https://github.com/YouXianMing

[C++] 用Xcode来写C++程序[4] 函数

用Xcode来写C++程序[4] 函数

 

 

此节包括引用函数,内联函数,防止修改函数入参,函数自身带有默认值.

引用函数:防止复制对象,减少系统开销

内联函数:编译的时候根据具体情形将代码嵌入进去,成不成功编译器说了算,减少系统开销提升性能

引用函数(防止篡改初始值的入参声明方式):防止修改数据源

函数参数带有默认值:函数的某个参数可以给定默认值,精简函数的使用

 

最简单的函数

#include <iostream>
using namespace std;

int addition (int a, int b) {
    return a + b;
}

int main () {
    int z;
    z = addition (5,3);
    cout << "The result is " << z << endl;
}

打印结果

The result is 8
Program ended with exit code: 0

 

 

 

传递引用(int& 表示)

#include <iostream>
using namespace std;

void duplicate (int& a, int& b, int& c) {
    a *= 2;
    b *= 2;
    c *= 2;
}

int main () {
    int x = 1, y = 3, z = 7;
    duplicate (x, y, z);
    cout << "x=" << x << ", y=" << y << ", z=" << z << endl;
    
    return 0;
}

打印结果

x=2, y=6, z=14
Program ended with exit code: 0

 

 

 

防止篡改数据源(const 修饰变量)

#include <iostream>
#include <string>
using namespace std;

string concatenate (const string& a, const string& b) {
    return a + b;
}

int main () {
    
    string x = "You";
    string y = "XianMing";

    cout << concatenate(x, y) << endl;
    
    return 0;
}

打印结果

YouXianMing
Program ended with exit code: 0

 

 

 

内联函数(减少函数调用开销)

#include <iostream>
#include <string>
using namespace std;

inline string concatenate (const string& a, const string& b) {
    return a + b;
}

int main () {
    
    string x = "You";
    string y = "XianMing";

    cout << concatenate(x, y) << endl;
    
    return 0;
}

打印结果

YouXianMing
Program ended with exit code: 0

 

 

 

带默认值的函数(如果不赋值,则有一个默认值)

#include <iostream>
using namespace std;

int divide (int a, int b = 2) {
    int r;
    r = a / b;
    return (r);
}

int main () {
    cout << divide (12)    << endl;
    cout << divide (20, 4) << endl;
    
    return 0;
}

打印结果

YouXianMing
Program ended with exit code: 0

 

 

 

函数先声明,后使用

#include <iostream>
using namespace std;

void odd (int x);
void even (int x);

int main() {
    int i;
    do {
        cout << "Please, enter number (0 to exit): ";
        cin >> i;
        odd (i);
    } while (i!=0);
    
    return 0;
}

void odd (int x)
{
    if ((x%2)!=0) cout << "It is odd.\n";
    else even (x);
}

void even (int x)
{
    if ((x%2)==0) cout << "It is even.\n";
    else odd (x);
}

 

 

 

递归调用

#include <iostream>
using namespace std;

long factorial (long a) {
    if (a > 1)
        return (a * factorial (a-1));
    else
        return 1;
}

int main () {
    long number = 9;
    cout << number << "! = " << factorial (number);
    return 0;
}

打印结果

9! = 362880
Program ended with exit code: 0

 

posted @ 2015-03-09 22:42  YouXianMing  阅读(882)  评论(0编辑  收藏  举报