C++ Primer 第五版 第6章 6.1——函数及函数定义及调用阅读笔记

习题答案请参考:C++ Primer 第五版 第6章 6.1 函数及函数定义及调用习题答案


目录

6.1 函数基础

函数定义

函数调用

函数的形参和实参

函数的返回类型

局部静态对象

函数声明

头文件中进行函数声明 


6.1 函数基础

函数定义

(1)函数返回类型;(2)函数名称;(3)函数形参列表:0个或者多个都可以;(4)函数体:执行功能

函数调用

函数名称(实参列表)


例子:

编写函数:求1*2*3*4*5 =120

int fact(int val)
{
    int ret = 1;
    while(val > 1)
        ret *= val--;
    return ret;
}

调用函数:

int main()
{
    int j = fact(5);
    cout << "5! is" << j << endl;
    return 0;
}

函数的形参和实参

(1)数量和类型必须对应

(2)形参列表,必须有类型声明,即使类型相同,也必须同时声明,如int f4(int v1, int v2)(这里是一个细节,一定得注意!!


函数的返回类型

(1)特殊的返回类型:void——表示无返回值

(2)函数和数组不能作为函数的返回类型,指向函数和数组的指针或引用可以作为返回类型这里也是一个细节,要注意!!


局部静态对象

使得局部变量的作用域贯穿函数调用及之后的时间,则就将局部变量定义成static类型获得局部静态对象(作用域贯穿整个程序,程序终止才会被销毁)(细节,注意!!

例子:统计函数被调用多少次

将局部变量定义为局部静态变量:

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

size_t count_calls()
{
    // 局部静态变量,调用结束后仍然有效
    static size_t count = 0;
    return ++count;
}

int main()
{
    for (size_t i = 0; i != 10; ++i)
        cout << count_calls() << endl;
    return 0;
}

运行结果 


对比,局部变量未定义为静态局部变量 :

# include <iostream>
#include <string>
#include <vector>
using namespace std;
size_t count_calls()
{
    // 局部变量,调用结束后就销毁
    size_t count = 0;
    return ++count;
}

int main()
{
    for (size_t i = 0; i != 10; ++i)
        cout << count_calls() << endl;
    return 0;
}

通过对比,可以明显发现静态局部变量的作用!!! 


函数声明

(1)函数在使用时必须进行声明

(2)函数声明无须函数体,也可以省略形参(细节,注意!!

(3)在声明时,最好带上形参有助于我们理解

 例子:上边的例子,计算函数调用次数的函数

size_t count_calls()
{
    // 局部变量,调用结束后就销毁
    size_t count = 0;
    return ++count;
}

声明时为:size_t count_calls() 


头文件中进行函数声明 

(1)将函数声明放在头文件中

(2)定义函数的源文件中一定得包含声明函数的头文件(细节,注意!!

例子:

# include <iostream>
using namespace std;

int fact(int val);  //阶乘函数的声明,val可以省略,但最好加上
int abs(int val);   // 求绝对值的函数声明

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值