c++ day04

2021-01-29  本文已影响0人  __method__

函数参数顺序

参数穿的顺序会对计算结果产生影响, 为了避免歧义出现,参数传递一定要注意顺序

#include <iostream>
using namespace std;
void fun(int x = 1, int y = 2, int z = 3){
    cout<<"x = "<< x<<"  y = "<< y<<"  z = "<< z<< endl;

}

int main()
{
    fun();
    fun(7);
    fun(7, 8);
    fun(7, 8, 9);
    return 0;
}

下面调用的是合法的

#include <iostream>
using namespace std;
void fun(int x, int y, int z = 3){
    cout<<"x = "<< x<<"  y = "<< y<<"  z = "<< z<< endl;

}

int main()
{
    fun(7, 8);
    fun(7, 8, 9);
    return 0;
}

默认参数需要在必须参数之后全部定义

#include <iostream>
using namespace std;
void fun( int y, int x = 1, int z = 3){
    cout<<"x = "<< x<<"  y = "<< y<<"  z = "<< z<< endl;

}

int main()
{
    fun(7, 8);
    fun(7, 8, 9);
    return 0;
}

c++ 中不能指定引用参数作为默认值
int fun( int y, int x = 1, int &z = 3) // 不合法

内联函数

声明方式是返回值前加inline关键字, 目的是对一些函数体不是很大, 但又频繁被调用而且想要很高的效率的函数来进行声明

#include <iostream>
using namespace std;
inline int cube(int x){
    return x*x*x;
}

int main()
{
    int result;
    result = cube(2);
    cout<<"2*2*2 = " << result<<endl;
    result = cube(3);
    cout<<"3*3*3 = " << result<<endl;
    return 0;
}

函数的重载 overload

什么是重载? 同名不同参
同名是函数名相同, 不同参是指 函数的参数类型和个数不相同, 这里与返回值没啥关系

// 重载
#include <iostream>
using namespace std;
int add(int x, int y){
    return x + y;
}
int add(int x, int y, int z){
    return x + y + z;
}
int add(double x, double y){
    return x + y;
}

int main()
{
    cout<<add(5, 3)<< endl;
    cout<<add(5.8, 3.2)<< endl;
    cout<<add(1, 2, 3)<< endl;
}

作用域

#include <iostream>
using namespace std;

void swap(int a, int b)
{
    cout<<"(2)"<<a<<'\t'<<b<<'\t'<<endl;
    if(a<b)
    {
        int t;  //t是局部变量,退出该复合语句,则t不能使用

        t=a;    a=b;    b=t;
    }
    cout<<"(3)"<<a<<'\t'<<b<<'\t'<<endl;

}
int main()
{
    int a =10, b =20;

//    cout<<"请输入两个整数: "<<endl;
//    cin>>a>>b;
    cout<<"(1)"<<a<<'\t'<<b<<'\t'<<endl;
    swap(a,b);
    cout<<"(4)"<<a<<'\t'<<b<<'\t'<<endl;
}

局部优先原则

#include <iostream>
using namespace std;
int main()
{
    int a=1, b=2;

    ++a;
    ++b;
    {
        int b=4, c;

        c=a+b;       //c只能在该复合语句内使用
        cout<<"a="<<a<<", "<<"b="<<b<<", "<<"c="<<c<<endl;
    }
    cout<<"a="<<a<<", "<<"b="<<b<<endl;
}
![](https://img.haomeiwen.com/i13248401/20e17de289f254af.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#include <iostream>
using namespace std;
int i = 10;
int main()
{
    // 在内部操作全局变量 :: 符合
    int i, j = 5;
    i=20;             //访问局部变量i
    ::i=::i+4;          //访问全局变量i
    j=::i+i;           //访问全局变量i和局部变量i、j
    cout<<"::i="<<::i<<endl;
    cout<<"i="<<i<<endl;
    cout<<"j="<<j<<endl;

}

存储类别

局部变量的存储类别

c++中 局部变量的存储为

#include <iostream>

using namespace std;

int fun(int x) {
    static int a = 3;
    a += x;
    return a;
}

int main() {
    int k = 2, m = 1, n;
    n = fun(k);
    cout << "first: n=" << n << endl;
    n = fun(m);
    cout << "second: n=" << n << endl;
}


static版本的阶乘求解

#include <iostream>

using namespace std;

int fac(int n)
{
    static int f=1;
    f=f*n;
    return(f);
}

int main() {
    int i;

    for (i=1; i<=5; i++)
        cout<<i<<"!="<<fac(i)<<endl;
}

int fac(register int n)
{
    static int f=1;
    f=f*n;
    return(f);
}
上一篇下一篇

猜你喜欢

热点阅读