2012-09-28 3 views
1

이 기본 구조이다포인터를 사용하여 동적 구조체 배열의 멤버에 액세스하는 방법은 무엇입니까?

#include <iostream> 
using namespace std; 

struct CandyBar 
{ 
    char brand_name[30]; 
    float candy_weight; 
    int candy_calories; 
}; 

int main() 
{ 
    CandyBar * snack = new CandyBar [3]; 

    return 0; 
} 

는 I 3 개 요소들의 어레이에 동적으로 할당 구조 (3)를 초기화 할 수 있었다. 심지어 다른 방법으로, 어떤 결과

snack[0]->brand_name = "Whatever"; 

: 나는 통해 구조에 액세스하려고

(*snack[0]).brand_name = "Whatever"; 

정말, 아무 단서 나는 며칠이 공부 한 이후로 .

+0

* 몇개의 오류가 있습니까? – nneonneo

+0

오류 : 표현식은 수정 할 수있는 lvalue 여야합니다. – User567845

+0

수정 된 답변을 참조하십시오. – nneonneo

답변

1

snack은 구조체 배열이므로 snack[0].brand_name을 사용하십시오.

또한 단지 대신 C. 사용 strcpy=를 사용하여 문자열을 복사 할 수 없습니다 : C++에서

strcpy(snack[0].brand_name, "Kitkat"); 
+0

불행히도, 입력에 감사드립니다. – User567845

+0

고마워, 지금 당장 노력하고있어. – User567845

+0

회원 자격 연산자에 대해 =를 사용하는 것은 불법이며 일반적으로 합법적입니다. 즉 char words [20] = { "Lots of words"}; 언어의 비전 모서리에 벤! 감사합니다. – User567845

0

는 문자열 배열이며, 배열은 =를 사용하여 복사 할 수 없습니다. 시도해보십시오 :

strcpy(snack[0].brand_name, "Whatever"); 
+0

입력 해 주셔서 감사합니다. 포함시킬 수있는 것을 완전히 무시했습니다. User567845

+0

'문자열 * 리터럴이 배열이어야 함'이어야합니다. –

+0

당신은 둘 다 동시에 대답했습니다. 그래서 nneonneo의 최종 답변을 받아 들였습니다. 그가 처음으로 대답했기 때문에, 미안합니다. – User567845

관련 문제