구조체의 배열의 세 번째 구성은 어레이 내의 제 3 위치에 배치 한, 즉, 인덱스 2
와 하나하여 (못생긴) 코드 invtry
은 type
유형의 구조 배열 (크기는 SIZE
)로 선언되었습니다. 그러므로 invtry[0]
은 첫 번째 요소이고 두 번째는 invtry[1]
이고 세 번째는 invtry[2]
입니다. 물론, SIZE >= 3
이라고 가정합니다.
일반적으로, 당신은 작성합니다
struct type{
char item[40];
double cost;
double retail;
int on_hand;
int lead_time;
};
const int SIZE = 500;
type invtry[SIZE];
이 당신이 물론 SIZE
의 정의를 제외하고, 쓴 것과 동의어이다. 하지만 덜 혼란 스럽습니다. 한 부분에서 type
(구조체에 대한 끔찍한 이름)이 무엇인지 말합니다. 즉, type
을 정의합니다. 나중에 invtry
이라는 type
유형의 구조체 배열을 만듭니다.
저자가 그랬던 것처럼 같은 줄에서이 작업을 수행하는 것은 단순히 내 눈에 끔찍한 일입니다.
이제 500 개의 구조체 배열이 있습니다. "type"이 "Product"인 경우 500 개의 제품을 나타내는 배열이 있습니다. 각 항목, 비용, 소매 등
배열의 세 번째 구조체에 액세스하려면 invtry[2]
을 작성하십시오. 특정 on_hand
필드에 액세스하려면 invtry[2].on_hand
을 입력하십시오. 이것은 정의 된 유형의 레이아웃에서 on_hand
의 특정 위치와 아무런 관련이 없습니다.
세 번째 구조의 lead_time을 원할 경우 먼저 세 번째 구조체에 액세스 한 다음 lead_time
멤버 (invtry[2].lead_time
)에 액세스하십시오.
유형에는 기본 (매개 변수없는) 생성자가 없으므로 물론 500 개 제품은 초기화되지 않았습니다. 이러한 제품에는 가비지가 있습니다. 그러나 그것은 당신의 문제입니다.
대부분의 사람들이 Schildt의 책을 경멸한다고 생각합니다 ... – hbw
그래, 그리고 이것은 하나의 이유입니다. 구조체 이름이 아니라 배열 이름을 색인화해야합니다. 그는 코드를 가지고 있지만 exmplanation은 잘못되었습니다. 예제에서'invtry'는 배열 이름이고 구조체 이름은'type'입니다. 자신의 논리에 따라 코드는'cout << type [2] .on_hand'이어야합니다. – MSalters
나에게 묻는다면, 타입을 정의하고 같은 타입으로 배열을 선언하는 것은 처음에는 "하지 마라". –