1135人加入学习
(5人评价)
C++编程系列 第二季函数和类

制作于2018.4.2

价格 免费
课程还未发布,不允许加入和购买

函数重载

函数名相同但是形参列表不同称为函数重载

[展开全文]

常量表达式函数

constexpr  int num()

{

    

}

[展开全文]

内联函数

将函数的内容由编译器直接替代主程序中的函数调用

int main()

{

   int sum = 0;

   sum = sum(20,30);

}

inline int sum(int b, intc)

{

     return b + c;

}

[展开全文]

#include <iostream>
#include <string>

using namespace std;
// 求两个数的调和平均数
// sca = (2*a1*a2) / (a1+a2);
// 1

enum Etimate {
    zero = 0,
    nonzero
};

void ScanfFunc(int&, int&);
Etimate EtimateFunc(int&, int&);
// 2,3
double HarmonicAverage(int&, int&);


int main()
{
    int num1 = 0;
    int num2 = 0;

    double harAve = 0;
    bool numBool = false;

    Etimate numEtimate = {nonzero};

    while (1)
    {
        ScanfFunc(num1, num2);
        numEtimate = EtimateFunc(num1, num2);
        if (zero == numEtimate)
        {
        return 0;
        }

        else if (nonzero == numEtimate)
        {
            harAve = HarmonicAverage(num1, num2);
            cout << "输入的数字是:" << num1 << " or " << num2 << ", 它们的调和平均数是: " << harAve << endl;
        }
        
    }
}

// 1、不断要求用户输入2个数,直到其中一个值为0;
void ScanfFunc(int& num1, int& num2)
{
    cout << "请输入两个数." << endl;
    cout << "第1个数:";
    cin >> num1;

    cout << "第2个数";
    cin >> num2;
    
    
}

Etimate EtimateFunc(int& num1, int& num2)
{
    
    if (0 == num1 || 0 == num2)
    {
        return zero;
    }
    else
    {
        return nonzero;
    }

}

// 2、对于每2个数,程序将使用一个函数来计算它们的调和平均数
// 3、函数将计算结果返回给主函数, 在主函数中输出输入的数字和它们的调和平均数
double HarmonicAverage(int& num1, int& num2)
{
    return (double)((2 * num1 * num2) / (num1 + num2));
}

 

[展开全文]
壹丶 · 2023-01-15 · 112-习题2 0

const int &num == const int* const num;

&num == const num;

 

[展开全文]

// 无法修改p所指向的地址及地址中的内容

const修饰的是int* 和变量p

const int* const p = 20;

 

 

// 可以更改p所指向的地址,但是无法更改地址中的内容

// const修饰的是int*

const int* p = 20;

 

 

// 可以修改地址中的内容,但是无法修改p指向的内存地址

//const修饰的是变量p

int* const p = 20;

[展开全文]

int main()

{

     int a = 0;

     int b = ; int c = 0;

// 应用变量

     Funcch(a);

// 指针变量

     Funch01(&b);

//普通变量,返回值

     c = Funch02(c);

      printf("%d\n", a);

}

 

// 引用变量类似于指针,函数使用的是原始数据

void Funch(int &r)

{

       r = 100;

}

 void Funch01(int * p)

{

       *p = 100;

}

 

int Funch02(int a)

{

        a = 100;

       return 100;

}

[展开全文]

const int *p

可以修改地址,不可以修改值

int const *p

可以修改值,不可以修改地址

[展开全文]

this指针访问自己的地址

[展开全文]

Studet stu1 = Student("Sandy",21);

Student stu2("Jane",20);

[展开全文]

头文件中常包含的内容:

1.函数原型

2.使用#define或者const定义的符号常量

3.结构声明

4.类声明

5.模版声明

6.内联函数

[展开全文]

bool (*pf) (const string &, const string &)

pf = lengthcompare

[展开全文]

arr是一个指针指向数组第一个元素
int sum_arr(const int arr[]) {
    arr[0] = 1;  因为有const 所以不能赋值
    return 0;

}

[展开全文]

常量表达函数

constexpr int fact(int n){

 return n == 1?1:n * fact(n - 1);

}

常量表达式

constexpr int num = 7;

在编译期间就就可以计算结果

fact(7)

fact(num)

int i = 7

实参为变量时 在运行期间返回结果

fact(i)

[展开全文]

不可以修改形参i

int cube1(cont int i){

}

[展开全文]

https://www.cnblogs.com/xwdreamer/archive/2012/04/12/2444494.html

 

[展开全文]

引用型参数,函数使用的是原始数据,而不是副本,对形参的修改就是对实参的修改

void reset(int &i){

 i = 4

}

int a = 8;

reset(a)

a的值变为8

[展开全文]

int reset1(int i){

}

修改*pi的值,就是修改实参指向的的对象的值,修改pi的值,是修改形参存储的地址,不影响实参的地址

int reset2(int *pi){

  *pi = 20; 

 pi = 0;

 

int a = 2;

reset2(a);

a的值变为20   但是a的地址没有变

[展开全文]

静态局部变量

每次调用都不会初始化,只到程序结束,但是只是局部变量,外部不能用

int min(){

 static int a = 1;

  a += 1; 

}

 

[展开全文]

授课教师

SIKI学院老师

课程特色

下载资料(1)
视频(43)