函数和数组
C++和C语言一样将数组名视作指针。对于遍历数组而言,使用指针加法和数组下标时是等效的。
如:
arr[i]==*(ar+i);
&arr[i]==ar+i;
C++数组作为参数函数的声明:
1:int sum_arr(int* _arr,int n);
2:int sum_arr(int _arr[],int n);
1和2在使用数组作为参数时是等效的。
将数组名和指针对应是一件非常好的事情,可以节省复制整个数组所需要的时间和内存。如果数组很大,则使用拷贝的系统开销会很大,程序需要更多的计算机内存。另外,如果使用原始数据,增加了破坏原始数据的风险。
C++使用数组区间的函数:
C++包含数组的函数可以使用两个指针来指定数组的区间,用来访问数组中的元素:
#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};
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 = total + *pt;
}
return total;
}
程序通过循环递增操作来更新指针pt,使之指向下一个元素,只要pt不是end,这一过程将一直执行下去,直至循环结束。
该程序在VS2017的输出结果为:
Total cookies eaten: 255
First three eaters ate: 7 cookies.
Last four eaters ate: 240 cookies.
C:\Users\Administrator\Desktop\MyPro\C++_Pro\Demo_03\Debug\Demo_03.exe (进程 8928)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口...
[cookies,cookies+ArSize]指定的是整个数组的元素数目。