【c++ primer, 5e】【函数基础】
p182~p185:
函数
1、在调用函数和执行return语句的同时,也发生了控制权的转移。
2、函数返回值不能是一个数组。(但是可以返回一个包含数组的对象,或者指向数组的指针)
3、重要概念:名字的作用域和对象的生命周期。
4、对象的生命周期分两种情况:一种是对象定义在函数体外部(包括main函数1),则对象将存在于程序的整个执行过程,第二种是对象定义在函数体内部,被称为自动变量(包括形参和普通局部变量),在块的末尾将被自动销毁。
5、局部静态对象的生命周期是程序的整个执行过程。
6、局部静态变量的默认初始化结果不是未定义的!!!并且,即使程序执行的路径将多次经过初始化语句,局部静态变量也只会被初始化一次(仅第一次)。
7、函数原型=函数声明≈函数签名。
6.1
实参是形参的初始值,形参是函数内部执行时要用到的变量。
6.2
a - 返回类型不匹配
b - 正确
c - 花括号漏了一边。。。
d - 正确
6.3
#include <iostream>
int fact(int val)
{
if (val == )
return ;
return val * fact(val - );
}
int main()
{
std::cout << fact() << std::endl; //
return ;
}
6.4
#include <iostream>
using namespace std;
int fact(int val)
{
if (val == )
return ;
return val * fact(val - );
}
int getFact()
{
cout << "Enter a number:" << endl;
int x;
cin >> x;
return fact(x);
}
int main()
{
cout << getFact() << endl;
return ;
}
6.5
int abs(int x)
{
if (x < )
return -x;
return x;
}
6.6
形参和局部变量多属于自动对象,生命周期仅限于所在块的范围。
局部静态变量将存在于程序的整个执行过程。
#include <iostream>
using namespace std;
int test(int x)
{
cout << "==========" << endl;
int i; // 默认初始化是未定义的!
i += x;
cout << "parameter val x=" << x << endl;
cout << "local var i=" << i << endl;
static int k; // 默认初始化为0!!!
++k;
cout << "local static var k=" << k << endl;
}
int main()
{
for (int i = ; i < ; ++i) {
test(i);
}
return ;
}
调用结果:
==========
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
int test()
{
static int k;
return k++;
}
【c++ primer, 5e】【函数基础】的更多相关文章
- C++ primer ch6 函数基础-1
1.形参和实参:编译器并没有规定实参的求值顺序. 类似下面的代码,其行为是未定义的: ; printf("%d %d\n",++i,++i); 2.变量的初始化: 如果内置类型的变 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- JavaScript 函数基础
1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call : 将函数作为对象的 ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归
一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...
- PHP基础入门(三)---PHP函数基础
PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...
- PHP基础入门(二)【PHP函数基础】
PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...
- 09-Python入门学习-函数基础与参数
一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
随机推荐
- js 跨域 之 修改服务器配置-XAMPP-Apache (nginx 拉到最后!)
js高程第21章提到了ajax 跨域技术,方法有很多,如图: 我主要讲这个: 其实代码就是这样就好了,当然只兼容 IE9 及之后的版本 ,IE9 之前的版本请去原书看吧,Page 600 var xh ...
- 配置Hibernate的流程
配置项目的前提下你应该配置好你的开发环境 1新建hibernate.cfg.xml文件,放在src目录里 <?xml version="1.0" encoding=" ...
- netstat -tulpn
[root@d java]# netstat -tulpnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Add ...
- Buffer Data
waylau/netty-4-user-guide: Chinese translation of Netty 4.x User Guide. 中文翻译<Netty 4.x 用户指南> h ...
- End-to-End Speech Recognition in English and Mandarin
w语音识别.噪音.方言,算法迭代. https://arxiv.org/abs/1512.02595 We show that an end-to-end deep learning approach ...
- 微信公众号获取用户openId How to use cURL to get jSON data and decode the data?
w http://stackoverflow.com/questions/16700960/how-to-use-curl-to-get-json-data-and-decode-the-data
- python open-falcon docker.WEB developers---flask,---django.
http://www.verydemo.com/demo_c281_i2477.html (python Gevent – 高性能的Python并发框架) http://www.django-rest ...
- d3.js 之SVG:矢量化图形绘制
SVG Scalable Vector Graphics 是一个成熟的W3C标准,被设计用来在web和移动平台 上展示可交互的图形.和HTML类似,SVG也支持CSS和JavaScript.尽管可以使 ...
- python类可以任意添加属性
python类可以任意添加属性 class A(object): def __init__(self): self.name = "zhangsan" self.age = 18 ...
- Linux vim编辑器常用命令
Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器 常用的vim命令如下图 补充: num+命令 对命令执行num次,如 5dd:剪切一行 * 5 即剪切5行,其它如此 /text ...