(笔记—C++ Primer) 第六章 函数

1. 函数基础

  • 函数定义包含以下部分:返回类型, 函数名, 形参列表, 函数体
  • 函数的调用完成两个工作:
    1. 用实参初始化函数对应的形参
    2. 将控制权转移给被调函数
  • 形参(parameters):Local variable declared inside the function parameter list. they are initialized by the arguments provided in the each function call.
  • 实参 (Arguments): Values supplied in a function call that are used to initialize the function’s parameters.
  • 函数的返回类型:大多数类型都可以,void表示不返回任何值; 返回类型不能是数组,但可以是指向数组和函数的指针;

:函数体必须由{}包含;

1.1 局部对象

  • 局部变量:形参和函数体内定义的变量统称为局部变量,且尽在作用域内可见,并且屏蔽外部同名变量;
  • 自动对象:只存在于块执行期间的对象;
  • 局部静态对象:其生命周期贯穿函数调用及其后,直至程序结束;定义方式:static int x = 0;.

1.2 函数声明

  • 函数声明必须在定义之前,函数只能定义一次,但可以声明多次; 函数声明不包含函数体,也不必须指定形参名;
  • 函数声明也称作函数原型(prototype)
  • 建议在头文件中函数声明,在源文件中函数定义;

2. 参数传递

  • 当形参为引用类型时, 相应实参被引用传递,即形参为实参的别名,实体时一致的;
  • 当形参为非引用类型时,实参被值传递,即实参的值被拷贝给形参;
  • 指针形参:拷贝的是指针的值,同样可以用于改变指向的外部对象,在C语言中多采用它,在C++中建议使用引用形参;

2.2 传引用参数

void reset(int &j)
{
    j = 0;
}
//调用:
reset(j);
  • 调用时,直接传入对象,而无须传入地址;
  • 对于较大的对象,可以避免拷贝;
  • 若无需改变对象的值,则形参最好声明为常量引用;

2.3 const形参和实参

  • 若形参是顶层const时,传给他常量或非常亮都是可以的;
  • 可以用非常量来初始化一个底层const(常量引用是底层的),但反过来不行,即非常量引用形参,不能接受const对象、字面值、和需要类型转换的对象,因此建议形参使用常量引用

2.4 数组形参

  • 两点性质:不允许拷贝数组,数组通常转换成指针
void print(const int *arr)
void print(const int arr[])
void print(cosnt int arr[10])
//三者是等价的,数组的尺寸信息均为传给函数
- 使用标记指定数组长度:适用于C风格字符串;
-   使用标准库规范:
void print(const int *begin, const int *end)
...
//call
print(begin(arr), end(arr))
- 显示传递数组的大小
  • 数组引用形参:
void print(int (&arr)[10])  //括号不能少

2.5 main:处理命令行

int main(int argc, char *argv[])
int main(int argc, char **argv)
//第一个参数表示字符串的数目, 第二个参数表示字符串数组
  • 运行方式:
    XXX.exe arg1 arg2

2.6 可变形参

  • initializer_list:适用于实参数目未知,但是其类型一致;
  • 传递值序列时,必须将序列放在一对花括号内;
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值