《C++ Prime Plus 第七章》—數組、函數、指針初步

我們經常會看到將一維數組的名字,即數組首地址作爲參數傳入函數,從而實現對數組進行一些簡單操作,比如數組的求和;此外我們還有另一種給函數提供所需信息的方法,即指定元素區間,這可以通過傳遞兩個指針來完成:一個指針標識數組的開頭,另一個指針標識數組的尾部。將區間傳遞給函數將告訴函數應當處理那些元素,這樣處理數組將更加靈活。

例如給出下例:

#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
...

通過這個簡單的例子,我們瞭解到使用數組區間的函數以及指針的簡單應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章