cpp primer plus 第七章

7.1 函数基本知识

7.1.1 定义函数

函数分为两类:有返回值与无返回值的函数。

对于有返回值的函数,必须使用返回语句,将值返回给调用函数。

若函数包含多条返回语句,则函数在执行第一条返回语句后结束。

7.1.2 函数原型

声明函数如果在main函数后方,则在前面声明函数(复制函数定义中的函数头并加分号),原型参数列表可包括变量名也可不包括。

7.2

7.2.1 函数参数

函数参数列表中的参数是形参,在函数中修改形参不会影响调用程序中的数据。

7.3 函数与数组

int sum_arr(int arr[],int n);

上述函数中,arr实际上并不是个数组,而是指针,但是在编写函数的其余部分时,可以将arr看做数组。

7.3.1 函数如何用指针来处理数组

int sum_arr(int arr[],int n);
int sum_arr(int* arr,int n);

 sum_arr的类型必须是int,所以数组类型必须是int指针,即int *。

int * arr 与 int arr[] 运用于函数头或者函数原型中的时候含义相同,在其他上下文中不能这么用。

arr[i] == *(arr + i);
&arr[i] == arr + i;

将指针+1实际上是加上一个与指针指向类型相同的类型的长度。对于遍历数组而言,使用指针加法和数组下标是等效的。

7.3.2 将数组作为参数意味着什么

传递常规变量的时候,函数将使用该变量的拷贝;但传递数组时,函数将使用原来的数组。

将数组地址作为参数可以节省复制整个数组所需的时间和内存。如果数组很大拷贝的系统开销会很大。

7.3.3 更多数组函数示例

为了防止函数无意修改数组中的数据,可在声明形参时使用const

void show_array(const double ar[],int n);

7.3.4 使用数组区间的函数

int cookies[ArSize] = {1,2,3,4,5,6};
int sum = sum_arr(cookies, cookies+ArSize);// 第一个元素与最后一个元素后面的一个位置

7.3.5 const 与 指针

int gorp = 16;
int chips = 12;
const int * p = &gorp; //静止修改p指向的值,允许使p指向另一个变量

int gorp = 16;
int chips = 12;
int const * p = &gorp; //允许修改p指向的值,静止使p指向另一个变量

7.10 函数指针

double pam(int);
double (*pf)(int);
pf = pam;//返回值类型应该相同
double x = pam(4);
double y = (*pf)(5);
//C++允许像函数名一样使用pf
double y = pf(5);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值