p182~p185:

函数
1、在调用函数和执行return语句的同时,也发生了控制权的转移。

2、函数返回值不能是一个数组。(但是可以返回一个包含数组的对象,或者指向数组的指针)

3、重要概念:名字的作用域和对象的生命周期。

4、对象的生命周期分两种情况:一种是对象定义在函数体外部(包括main函数1),则对象将存在于程序的整个执行过程,第二种是对象定义在函数体内部,被称为自动变量(包括形参和普通局部变量),在块的末尾将被自动销毁。

5、局部静态对象的生命周期是程序的整个执行过程。

6、局部静态变量的默认初始化结果不是未定义的!!!并且,即使程序执行的路径将多次经过初始化语句,局部静态变量也只会被初始化一次(仅第一次)。

7、函数原型=函数声明≈函数签名。

6.1
实参是形参的初始值,形参是函数内部执行时要用到的变量。

6.2
a - 返回类型不匹配
b - 正确
c - 花括号漏了一边。。。
d - 正确

6.3

  1. #include <iostream>
  2. int fact(int val)
  3. {
  4. if (val == )
  5. return ;
  6. return val * fact(val - );
  7. }
  8. int main()
  9. {
  10. std::cout << fact() << std::endl; //
  11. return ;
  12. }

6.4

  1. #include <iostream>
  2. using namespace std;
  3. int fact(int val)
  4. {
  5. if (val == )
  6. return ;
  7. return val * fact(val - );
  8. }
  9. int getFact()
  10. {
  11. cout << "Enter a number:" << endl;
  12. int x;
  13. cin >> x;
  14. return fact(x);
  15. }
  16. int main()
  17. {
  18. cout << getFact() << endl;
  19. return ;
  20. }

6.5

  1. int abs(int x)
  2. {
  3. if (x < )
  4. return -x;
  5. return x;
  6. }

6.6
形参和局部变量多属于自动对象,生命周期仅限于所在块的范围。
局部静态变量将存在于程序的整个执行过程。

  1. #include <iostream>
  2. using namespace std;
  3. int test(int x)
  4. {
  5. cout << "==========" << endl;
  6. int i; // 默认初始化是未定义的!
  7. i += x;
  8. cout << "parameter val x=" << x << endl;
  9. cout << "local var i=" << i << endl;
  10. static int k; // 默认初始化为0!!!
  11. ++k;
  12. cout << "local static var k=" << k << endl;
  13. }
  14. int main()
  15. {
  16. for (int i = ; i < ; ++i) {
  17. test(i);
  18. }
  19. return ;
  20. }

调用结果:

==========
parameter val x=0
local var i=6422476
local static var k=1
==========
parameter val x=1
local var i=6422477
local static var k=2
==========
parameter val x=2
local var i=6422479
local static var k=3
==========
parameter val x=3
local var i=6422482
local static var k=4

6.7

  1. int test()
  2. {
  3. static int k;
  4. return k++;
  5. }

【c++ primer, 5e】【函数基础】的更多相关文章

  1. C++ primer ch6 函数基础-1

    1.形参和实参:编译器并没有规定实参的求值顺序. 类似下面的代码,其行为是未定义的: ; printf("%d %d\n",++i,++i); 2.变量的初始化: 如果内置类型的变 ...

  2. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  3. JavaScript 函数基础

    1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call   : 将函数作为对象的 ...

  4. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  5. 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

    一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...

  6. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  7. PHP基础入门(二)【PHP函数基础】

    PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...

  8. 09-Python入门学习-函数基础与参数

    一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...

  9. Python学习day9 函数Ⅰ(基础)

    函数Ⅰ(基础) 三目运算 基本结构 v =  前面  if 条件 else 后面    #条件为真v=前面,条件为假v=后面.​#等同于if 条件: v = '前面'else:    v = '后面' ...

  10. Python学习笔记-函数基础

    函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...

随机推荐

  1. IOS 程序内部切换语言 的一种方法

    本文转载至  http://www.cnblogs.com/wuyijibei/archive/2013/08/01/3230468.html 1: 首先, 所有的语言资源还是需要和现在的i18n方法 ...

  2. Android之检查网络是否可用(跳转网络设置页面)

    private boolean NetWorkStatus() { ConnectivityManager cwjManager = (ConnectivityManager) getSystemSe ...

  3. 【BZOJ1217】[HNOI2003]消防局的设立 树形DP

    [BZOJ1217][HNOI2003]消防局的设立 Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地, ...

  4. SignalR 循序渐进(四) Hub的生命周期以及IoC

    有阵子没更新这个系列了,最近太忙了.本篇带来的是Hub的生命周期以及IoC. 首先,Hub的生命周期,我们用一个Demo来看看: public class TestHub : Hub { public ...

  5. Efficient data transfer through zero copy

    Efficient data transfer through zero copy https://www.ibm.com/developerworks/library/j-zerocopy/ Eff ...

  6. 并发编程 - IO模型 - 1.io模型/2.阻塞io/3.非阻塞io/4.多路复用io

    1.io模型提交任务得方式: 同步:提交完任务,等结果,执行下一个任务 异步:提交完,接着执行,异步 + 回调 异步不等结果,提交完任务,任务执行完后,会自动触发回调函数同步不等于阻塞: 阻塞:遇到i ...

  7. Python 进程(process)

    1. 进程 1.1 进程的创建 fork 正在运行着的代码,就称为进程 # 示例: import os # 注意: fork 函数,只在 Unix/Linux/Mac 上运行, windows 不可以 ...

  8. Django中对静态文件的支持(转)

    英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...

  9. python模块之PIL模块(生成随机验证码图片)

    PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...

  10. 【云安全与同态加密_调研分析(5)】云安全标准现状与统计——By Me