[英]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.