1. 程式人生 > >C++中陣列的引用—防止陣列退化

C++中陣列的引用—防止陣列退化

在c語言中,陣列作為函式引數時,實際上陣列已經退化為指標使用。 
下面這三種用法是等價的:

int f1(int apples[]);
int f1(int apples[10]);
int f1(int* apples);

這樣一來,在f1中是無法知道陣列的大小的,開發者必須提前知道陣列大小。

C++中定義了陣列的引用(例如,int (&a)[2]),可以有效的防止陣列退化。 
也就是,陣列作為函式引數傳遞過去後,仍然是一個數組。

語法:型別 (&引用名)[陣列中元素數量]=陣列名;

舉例說明其用法
#include <iostream>
using namespace std;

int f1(int (&a)[6])
{
        int count = 0;
        for(int i=0; i < 6; i++)
        {
                count += a[i];
        }

        return count;
}

int main()
{
        int apples[6] = {2,3,4,5,6,7};
        int count = f1(apples);

        cout<<"count:"<<count<<endl;
        return 0;
}

如果將
int apples[6] = {2,3,4,5,6,7};
改為
int apples[5] = {2,3,4,5,6};
編譯時將報錯
說明編譯時將進行陣列長度的檢查