函数基础

1、函数基础:

一个典型的函数包含:函数名,返回类型,形参列表。

其中,形参以逗号隔开,形参的列表位于一对圆括号内。函数执行的操作在语句块中说明,该语句成为函数体。

我们通过使用运算符来执行函数。调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函数的指针,圆括号内部是实参列表。

函数的返回类型:一种特殊的返回类型是void,他表示函数不返回任何值。函数的返回类型不能是数组类型或者函数类型,但可以是指向数组或函数的指针。

2、局部对象

在C++程序语言中,名字有作用域,对象有生命周期。

(1)名字的作用域是程序文本的一部分,名字在其中可见。

(2)对象的生命周期是程序执行过程中对该对象存在的一段时间。

如我们所知,函数体是一个语句块。块构成一个新的作用域,我们可以在其中定义变量。形参和参数体内部定义的变量统称为局部变量。他们对函数来说是局部的,仅在函数的作用域内可见,同时局部变量还会隐藏在外层作用域中同名的其他所有声明中。

在所有函数体之外定义的对象存在于程序的整个执行过程中。此类对象在程序启动时被创建,知道程序结束时才会被销毁。

局部静态对象:

另局部变量的生命周期贯穿函数调用即之后的时间。可以将局部变量定义成static类型从而获得这样的对象。局部静态对象在程序的执行路径第一次经过对象定义语句时初始化,到程序结束在被销毁。

例如函数需要统计自己被调用了多少次,

size_t count()

{

static size_t ctr=0;//调用结束后这个值还是有效

return ctr++;

}

3、函数声明:

函数也要在使用之前声明。类似于变量。函数只能定义一次,但可以声明多次。

4、分离式编译:

随着程序越来越复杂我们希望把程序的各个部分分别存储在不同的文件中。把使用这些函数的代码存在其他源文件中。每个文件独立编译。

编译和连接多个源文件:

假设fact函数的定义位于一个名为fact.cc的文件中,他的声明位于名为chapter6.h的头文件之中。虽然与其他所用到的fact函数的文件一样,fact.cc因该包含chapter6.h头文件。另外,我们在名为factMain.cc的文件中创建了main函数,main函数将调用fact函数。要生成可执行文件,必须告诉编译器我们用到的代码在哪了》

原文地址:https://www.cnblogs.com/yjds/p/8597239.html