习题答案请参考: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);   // 求绝对值的函数声明

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

  1. C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)习题答案

    理论讲解请参考:C++ Primer 第五版 第7章类 7.1--类讲解(成员函数.非成员函数.构造函数) 目录 7.1 定义抽象数据类型习题答案 7.4&7.5 7.6&7.7 7. ...

  2. C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)

    习题答案请参考:C++ Primer 第五版 第7章类 7.1--类讲解(成员函数.非成员函数.构造函数)习题答案 目录 7.1 类讲解(成员函数.非成员函数.构造函数) 成员函数 this cons ...

  3. C++ Primer 第五版 第6章——函数阅读笔记及习题答案(完整,附C++代码)

    C++Primer(第五版)第6章函数的阅读笔记及课后习题答案总结,课后习题答案是自己学习写出来的,如果有误,欢迎指正 还不完整,后续会更新添加 阅读笔记 C++ Primer 第五版 第6章 6.1 ...

  4. C++ Primer 第五版 第6章 6.7——函数指针习题答案

    理论请参考:C++ Primer 第五版 第6章 6.7--函数指针阅读笔记 目录 6.7 函数指针习题答案 6.54 6.55 6.56 6.7 函数指针习题答案 6.54 vector是指向该函数 ...

  5. C++ Primer 第五版 第6章 6.7——函数指针阅读笔记

    习题答案请参考:C++ Primer 第五版 第6章 6.7--函数指针习题答案 目录 6.7 函数指针 使用函数指针 返回指向函数的指针 6.7 函数指针 声明一个函数指针,只需要用指针替代函数名即 ...

  6. C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记

    习题答案请参考:C++ Primer 第五版 第6章 6.3--函数返回类型和return语句习题答案 目录 6.3 返回类型和return语句 6.3.1 无返回值函数 无返回值函数的特性 6.3. ...

  7. C++ Primer 第五版 第6章 6.3——函数返回类型和return语句习题答案

    理论讲解请参考:C++ Primer 第五版 第6章 6.3--函数返回类型和return语句阅读笔记 目录 6.31 6.32 6.33 6.34 6.35 6.36 6.38 6.31 返回引用无 ...

  8. C++ Primer 第五版 第6章 6.2——函数参数传递习题答案

    理论讲解请参考:C++ Primer 第五版 第6章 6.2--函数参数传递阅读笔记 目录 6.10 指针形参交换两个数 6.12 引用形参交换两个数 6.13 6.14 6.15 6.16 6.17 ...

  9. C++ Primer 第五版 第6章 6.2——函数参数传递阅读笔记

    习题答案请参考:C++ Primer 第五版 第6章 6.2--函数参数传递习题答案 目录 6.2 函数参数传递 6.2.1 传值参数(值传递) 指针形参 6.2.2 传引用参数(引用传递) 使用引用 ...

  10. C++ Primer 第五版 第6章 6.1——函数及函数定义及调用习题答案

    理论讲解请参考:C++ Primer 第五版 第6章 6.1 函数及函数定义及调用阅读笔记 目录 目录 6.1 形参和实参的区别 6.2 函数语法考察 6.4 交互式输入数字,计算阶乘 6.5 输出实 ...

最新文章

  1. 2-结构体的最后一个成员的定义-C语言中的柔性数组-
  2. 爬虫为什么使用asyncio以及邮件系统为什么使用celery
  3. 玩转oracle 11g(16):命令学习4
  4. 30秒解决电脑越用越卡的大众常见难题
  5. 既稳又狂!黑鲨游戏手机2官宣发布时间:3月18日北京见
  6. storm中worker、executor、task之间的关系
  7. Python 数据结构 树
  8. Atitit 同步获取阻塞式命令行输出 费阻塞式样命令行执行完毕后退出了,可以直接获取其输出 InputStream is = new StreamGobbler(session.getStd
  9. 腾讯云服务器安装AMH控制面板
  10. 常用测试工具-----IPOP
  11. 最近火爆的美团饿了么外卖cps分销裂变小程序搭建及推广秘籍(附搭建源码)
  12. 单因素方差分析(R)
  13. Google Analytics与百度统计比较
  14. THREEJS 模型调整旋转中心
  15. 计算机无法使用打印机预览,电脑中excel打印预览无法查看的处理方法
  16. Emacs、cedet、ecb
  17. STM32F0/F1/F2/F3/F4/F7编程数据中英文手册(所有型号中文参考手册)
  18. 信标链 Altair 升级在即!将带来哪些好处?
  19. 在CSS中创建径向菜单
  20. 机器视觉 手部关键点检测(手部识别)安卓应用App(Hand Tracking)基于mediapipe。

热门文章

  1. python plot map_python的colormap总结(matplotlib+ncl+气象家园调色盘)
  2. web用户登录界面设计_UI设计师怎样做界面设计?
  3. 蜂鸟笔记本swift接口_蜂鸟Swift 5可清新文艺、又可尊贵典雅
  4. python实现dos攻击_dos攻击原理及攻击实例
  5. MySQL+create+base,MySQL中CREATE DATABASE和CREATE SCHEMA的区别
  6. linux修改ip配置文件_协助调试Linux服务器经验分享
  7. utc时间转换为时分秒_C语言操作时间函数,实现定时执行某个任务小程序
  8. php 原理 阮一峰,全文Feed的终极解决方案
  9. python 雪花id_基于python实现雪花算法过程详解
  10. Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)