c++ 中數組的引用


在C++里,數組也是可以引用的。

代碼如下:

1 char str1[] = "abcde";
2 char (&str2)[6] = str1;

解讀第二句代碼,括號的優先級最高,'str2'首先與'&'相結合,表明'str2'是一個引用。

接着'&str2'與右邊的'[6]'結合,表明str2是數組的引用,且數組中有6個元素。

最后'(&str2)[6]'與左邊的'char'結合,表明被引用的數組是一個char類型的數組。

在聲明數組的引用時,有兩個地方需要注意:

第一個地方是'&'的位置,它必須要與reference的名字用括號括起來。

第二個地方是必須要指定被引用的數組中元素的個數,且元素的個數必須與實際所引用的數組中元素的個數嚴格匹配。

 

兩種錯誤的聲明方式:

1 //type1: char& str2[6] = str1;
2 //vs編譯報錯:array of reference is not allowed(不允許使用元素為引用的數組)

解讀一下這句代碼:

'str2'先與右邊的'[6]'結合,表示'str2'是一個數組。

接着'str2[6]'與左邊的'char&'結合,表示數組中的元素是一個char的引用。

 

1 //type2: char (&str2)[] = str1;
2 //vs編譯報錯:cannot convert from 'char [6]' to 'char (&)[]'

 

 原因:需要指定所引用的數組中所含元素的數量。

 

數組引用的正確使用姿勢:

結合c++中模板中的非類型參數(nontype parameter)。

#include <string>


template<unsigned M,unsigned N>
int compare(char (&leftStr)[M], char (&rightStr)[N])
{
    return strcmp(leftStr, rightStr);
}

int main()
{
    char str1[] = "abcde";
    char str2[] = "abcdefg";
    
    compare(str1, str2);
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM