使用数组区间的函数

另一种给函数提供所需信息的方法,即指定元素区间(range),这可以通过传递两个指针来完成:一个指针标识数组的开头,另一个指针标识数组的尾部。也就是说,对于数组而言,表示数组结尾的参数将是指向最后一个元素后面的指针。例如,假设有这样的声明:
double elbuod [20];
这指针elboud和elboud+20定义了区间。首先,数组名elboub指向了第一个元素。表达式elboud+19指向最后一个元素,因此,elboud+20指向数组结尾后面的一个位置。将区间传递给函数将告诉函数应除了那些元素。

//arrfun4.cpp -- functions with an array range
#include <iostream>
const int ArSize = 8;
int sum_arr(const int* begin, const int* end);
int main() {
	using namespace std;
	int cookies[ArSize] = { 1,2,4,8,16,32,64,128 };
	//some systems require preceding int with static to
	//enable array initialization
	int sum = sum_arr(cookies, cookies + ArSize);
	cout << "Total cookies eaten: " << sum << endl;
	sum = sum_arr(cookies, cookies + 3);	//first 3 elements
	cout << "First three eaters ate " << sum << " cookies.\n";
	sum = sum_arr(cookies + 4, cookies + 8);	//last 4 elements
	cout << "Last four eaters ate " << sum << " cookies.\n";
	return 0;
}//return the sum of an integer array
int sum_arr(const int* begin, const int* end) {
	const int* pt;
	int total = 0;
	for (pt = begin; pt != end; pt++)
		total = total + *pt;
	return total;
}

下面是该程序的输出
在这里插入图片描述
请注意不同的函数调用时如何指定数组中不同的区间的
int sum = sum_arr (cookies, cookies + ArSize);

sum = sum_arr(cookies, cookies +3 ); //first 3 elements

sum = sum_arr(cookies + 4, cookies + 8); //last 4 elements

指针cookies+ArSize指向最后一个元素后面的一个位置。因此,区间[cookies,cookies + ArSize]指定的是整个数组。同样,cookies,cookies+3指定了前3个元素,以此类推。
请注意,根据指针减法规则,在sum_arr( )中,表达式end-begin是一个整数值,等于数组的元素数目。

By《C++ Primer Plus》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值