《C++ Prime Plus 第七章》—数组、函数、指针初步
2014-12-08 00:37
281 查看
我们经常会看到将一维数组的名字,即数组首地址作为参数传入函数,从而实现对数组进行一些简单操作,比如数组的求和;此外我们还有另一种给函数提供所需信息的方法,即指定元素区间,这可以通过传递两个指针来完成:一个指针标识数组的开头,另一个指针标识数组的尾部。将区间传递给函数将告诉函数应当处理那些元素,这样处理数组将更加灵活。
例如给出下例:
#include <iostream>
//#include<cstdio>
using namespace std;
const int arsize=8;
int sum_arr(const int *begin,const int *end);
int main()
{
int cookies[arsize]={1,2,4,8,16,32,64,128};
int sum=sum_arr(cookies,cookies+arsize);
cout<<"Total cookies eaten: "<<sum<< endl;
sum=sum_arr(cookies,cookies+3);
cout<<"First three eaters ate "<<sum<<" cookies.\n";
sum=sum_arr(cookies+4,cookies+8);
cout<<"Last four eaters ate "<<sum<<" cookies.\n";
return 0;
}
int sum_arr(const int *begin,const int *end)
{
const int *pt;
int total=0;
for(pt=begin;pt!=end;pt++)
total+=*pt;
return total;
}
![](https://img-blog.csdn.net/20141208004858871)
程序说明
请注意程序中的sum_arr()函数中的for循环:
for(pt=begin;pt!=end;pt++)
total+=*pt;
它将pt设置为指向要处理的第一个元素(begin指向的元素)的指针,并将*pt(元素的值)加入到total中。然后,循环通过递增操作来更新pt,使之指向下一个元素。只要pt不等于end,这一过程就将继续下去。当pt等于end时,它将指向区间的最后一个元素后面的位置,此时循环将结束。
其次,请注意不同的函数调用是如何指定数组中不同的区间的:
int sum=sum_arr(cookies,cookies+arsize); // all elements
通过这个简单的例子,我们了解到使用数组区间的函数以及指针的简单应用。
例如给出下例:
#include <iostream>
//#include<cstdio>
using namespace std;
const int arsize=8;
int sum_arr(const int *begin,const int *end);
int main()
{
int cookies[arsize]={1,2,4,8,16,32,64,128};
int sum=sum_arr(cookies,cookies+arsize);
cout<<"Total cookies eaten: "<<sum<< endl;
sum=sum_arr(cookies,cookies+3);
cout<<"First three eaters ate "<<sum<<" cookies.\n";
sum=sum_arr(cookies+4,cookies+8);
cout<<"Last four eaters ate "<<sum<<" cookies.\n";
return 0;
}
int sum_arr(const int *begin,const int *end)
{
const int *pt;
int total=0;
for(pt=begin;pt!=end;pt++)
total+=*pt;
return total;
}
程序说明
请注意程序中的sum_arr()函数中的for循环:
for(pt=begin;pt!=end;pt++)
total+=*pt;
它将pt设置为指向要处理的第一个元素(begin指向的元素)的指针,并将*pt(元素的值)加入到total中。然后,循环通过递增操作来更新pt,使之指向下一个元素。只要pt不等于end,这一过程就将继续下去。当pt等于end时,它将指向区间的最后一个元素后面的位置,此时循环将结束。
其次,请注意不同的函数调用是如何指定数组中不同的区间的:
int sum=sum_arr(cookies,cookies+arsize); // all elements
...<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<pre name="code" class="cpp" style="font-size: 14px;"> sum=sum_arr(cookies,cookies+3); // first 3 elements
...
<pre name="code" class="cpp" style="font-size: 14px;"> sum=sum_arr(cookies+4,cookies+8); // last 4 elements...
通过这个简单的例子,我们了解到使用数组区间的函数以及指针的简单应用。
相关文章推荐
- 《C++ Prime Plus 第七章》—函数和结构体初识
- C++ Primer plus 学习笔记之第七章(2)函数指针
- 《C++ Prime Plus 第七章》—指针和const
- C++中的函数指针的数组
- C++ Primer Plus学习:第七章 函数-C++的编程模块(3)
- [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数
- C++虚构函数 构造函数更新中......(数组与指针)
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- C++ primer(七)--函数、C++的编程模块 函数指针 函数指针数组 typedef
- C++中将数组的指针作为函数参数
- [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数
- C/C++ 指针 数组 const 函数
- [原创] 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 指针, 指针的指针, 数组, 指针数组, 数组指针, 指针函数, 函数指针 C/C++中函数指针的含义
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- C/C++指针与const、数组、函数
- C++ Primer Plus学习:第七章 函数-C++的编程模块(2)
- 2012/1/19 《C++ Primer Plus》第七章:函数——C++编程模块 学习笔记
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子