簡體   English   中英

引用結構體數組

[英]Reference to array of struct

我正在學習C ++中的引用。 是否無法創建對結構數組的引用?

struct student {
    char name[20];
    char address[50];
    char id_no[10];
};

int main() {
    student test;
    student addressbook[100];
    student &test = addressbook; //This does not work
}

我收到以下錯誤:

類型“ student&”(不是const限定)的引用不能使用類型“ student [100]”的值初始化
錯誤C2440“正在初始化”:無法從“學生[100]”轉換為“學生&”

引用的類型必須匹配它所引用的內容。 對單個學生的引用不能引用由100個學生組成的數組。 您的選擇包括:

// Refer to single student
student &test = addressbook[0];

// Refer to all students
student (&all)[100] = addressbook;
auto &all = addressbook;               // equivalent

是的,有可能。 它只是必須是正確類型的引用。 一個學生不是100個學生組成的數組。 語法有點笨拙:

student (&test)[100] = addressbook;

閱讀以下內容將更有意義: http : //c-faq.com/decl/spiral.anderson.html

您將在數組引用中看到的最常見的位置可能是模板函數的參數,在此推斷出大小。

template<typename T, size_t N>
void foo(T (&arr)[N]);

這使您可以將數組作為單個參數傳遞給函數,而不會衰減到指針並丟失大小信息。

可以在帶有std::begin/end的標准庫中看到一個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM