C++ Primer_6 函数

6.1 函数基础

  一个典型的函数定义包含如下部分:返回类型、函数名、0个或多个形参组成的列表及函数体。

编写函数:

// factorial of val is val * (val - 1) * (val - 2) . . . * ((val - (val - 1)) * 1)
int fact(int val)
{
int ret = 1; // local variable to hold the result as we calculate it
while (val > 1)
ret *= val--; // assign ret * val to ret and decrement val
return ret; // return the result
}
调用函数:

int main()
{
int j = fact(5); // j equals 120, i.e., the result of fact(5)
cout << "5! is " << j << endl;
return 0;
}


形参和实参:

实参是形参的初始值,实参的类型必须与对应的形参类型匹配。


函数的形参列表:

函数的形参列表可以为空,但不能省略;

void f1(){ /* ... */ } // implicit void parameter list 隐式定义形参列表
void f2(void){ /* ... */ } // explicit void parameter list 显式..
形参列表众的形参常用逗号隔开,每个形参都必需声明,及时类型一样,也必须都写出来;
int f3(int v1, v2) { /* ... */ } // error
int f4(int v1, int v2) { /* ... */ } // ok
任意连个形参不能同名,函数最外层作用域中的局部变量也不能使用与函数形参一样的名字。

函数的返回类型:
函数的返回类型不能是数组类型或函数类型,但可以是指向数组或函数的指针。

6.1.1 局部对象


6.1.2 函数声明

函数的三要素描述了函数的接口,说明了调用该函数所需的全部信息,我们建议变量在头文件中声明,在源文件中定义,函数也是如此。

// parameter names chosen to indicate that the iterators denote a range of values to print
void print(vector<int>::const_iterator beg,
vector<int>::const_iterator end);

6.1.3 分离式编译


6.2 参数传递

     每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化。形参的类型决定了形参和实参交互的方式:如果形参是引用类型,他将绑定到对应的实参上;否则,将实参的值拷贝后赋给形参。和其他引用一样,引用形参也是他绑定的对象的别名。


6.2.1 传值参数


6.2.2 传引用参数


6.2.3 const 形参和实参
6.2.4 数组形参
6.2.5 main:处理命令行选项
6.2.6 含有可变形参的函数
6.3 返回类型和 return 语句
6.3.1 无返回值函数
6.3.2 有返回值函数
6.3.3 返回数组指针
6.4 函数重载
6.4.1 重载与作用域
6.5 特殊用途语言特性
6.5.1 默认实参
6.5.2 内联函数和constexpr 函数
6.5.3 调试帮助
6.6 函数匹配
6.6.1 实参类型转换
6.7 函数指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值