728x90
반응형
배열은 동일한 유형의 요소 집합이다. 가장 단순한 형태의 구조체는 임의 유형의 요소 집합이다.
struct Address {
const char∗ name; // "Jim Dandy"
int number; // 61
const char∗ street; // "South St"
const char∗ town; // "New Providence"
char state[2]; // 'N' 'J'
const char∗ zip; // "07974"
};
이것은 미국 내 누군가에게 메일을 보내기 위해 필요한 항목으로 구성된 Address라는 유형을 정의한다. 종료를 위한 세미콜론(;)을 잊지 말자.
Address 유형의 변수는 다른 변수와 똑같이 선언할 수 있으며 개별 멤버는 점(.) 연산자를 사용하여 접근할 수 있다.
void f()
{
Address jd;
jd.name = "Jim Dandy";
jd.number = 61;
}
구조체 유형의 변수는 {} 표기법을 사용하여 초기화할 수 있다.
Address jd = {
"Jim Dandy",
61, "South St",
"New Providence",
{'N','J'}, "07974"
};
jd.state는 "NJ" 문자열로 초기화할 수 없다. 문자열은 zero-character '\0'으로 끝나므로 "NJ"에는 3개의 문자가 있다. 하나는 jd.state에 맞는 것보다 많다. 그것이 어떻게 가능하고 어떤 종류의 문제를 일으킬 수 있는지 설명하기 위해서 의도적으로 다소 낮은 수준의 유형을 사용했다.
구조체는 종종 ->(구조체 포인터 역참조) 연산자를 사용하여 포인터를 통해 액세스 된다.
void print_addr(Address∗ p)
{
cout << p−>name << '\n'
<< p−>number << ' ' << p−>street << '\n'
<< p−>town << '\n'
<< p−>state[0] << p−>state[1] << ' ' << p−>zip << '\n';
}
p가 포인터일 때 p->m은 (*p). m과 동일하다. 또는 참조로 구조체를 전달하고 점(.)(구조체 멤버 액세스) 연산자를 사용하여 접근할 수 있다.
void print_addr2(const Address& r)
{
cout << r.name << '\n'
<< r.number << ' ' << r.street << '\n'
<< r.town << '\n'
<< r.state[0] << r.state[1] << ' ' << r.zip << '\n';
}
구조체 유형의 객체를 할당하고, 함수 인수로 전달하고, 함수의 결과로 반환할 수 있다.
Address current;
Address set_current(Address next)
{
address prev = current;
current = next;
return prev;
}
비교(== 와!=)와 같은 다른 가능한 작업은 기본적으로 사용할 수 없지만 연산자를 정의하여 사용할 수 있다.
728x90
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] 구조체 이름 (0) | 2022.01.03 |
---|---|
[C++] 구조체 layout (0) | 2022.01.03 |
[C++] 포인터와 참조 (1) | 2021.12.29 |
[C++] 참조에 대한 참조 (0) | 2021.12.29 |
[C++] rvalue 참조 (0) | 2021.12.29 |