2016-07-03 3 views
1

C++에서 참조에 대해 배우고 있습니다. 구조체 배열에 대한 참조를 만들 수 있습니까?구조체의 배열에 대한 참조

유형의 참조 "학생 &"(안 const를 수식) 유형의 값으로 초기화 할 수 없습니다 "학생 [100]"
오류 :

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 
} 

나는 다음과 같은 오류를 얻을 수 C2440 '초기화'는 '학생 &'

+2

주소록 유형은 '학생'이 아니며 '학생 [100]'입니다. 그리고 배열에 대한 참조를 배우는 것을 원하지 않습니다. 포인터/반복기 만 사용하십시오. – KABoissonneault

답변

4

가 언급되어 일치해야 참조의 유형으로 '학생 [100]'에서 변환 할 수 없습니다. 한 학생에 대한 언급은 100 명의 학생을 의미 할 수는 없습니다. 선택할 수있는 옵션은 다음과 같습니다.

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

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

예 가능합니다. 올바른 유형의 참조 일뿐입니다. 학생은 100 명의 학생으로 구성되어 있지 않습니다. 구문은 비록 조금 어색 : 읽고 한 번 더 이해가됩니다

student (&test)[100] = addressbook; 

이 : http://c-faq.com/decl/spiral.anderson.html

당신이 배열 참조를 볼 수 있습니다 가장 일반적인 장소는 템플릿 함수에 인수로 아마 어디 크기가 추론됩니다.

이렇게하면 포인터가 부패하지 않고 크기 정보를 잃지 않고 하나의 인수로 함수에 배열을 전달할 수 있습니다.

예는 std::begin/end 인 표준 라이브러리에서 볼 수 있습니다.