1. 함수의 인자로 전달되고 return 문에 의해 반환되는 구조체 변수
1. 함수의 인자로 구조체 변수가 전달될 수 있고, 인자를 전달받을 수 있도록 구조체 변수가 매개변수의 선언으로 올 수 있다. 전달되는 구조체 변수의 값은 매개변수에 통째로 복사된다.
2. 구조체 멤버로 배열이 선언되어도 동일한 형태로 배열이 통째로 복사된다.
3. 구조체의 포인터 변수도 매개변수로 선언되면 Call-by-reference 형태의 함수호출을 구성할 수 있다.
2. 구조체 변수를 대상으로 가능한 연산
1. 구조체 변수를 대상으로는 매우 제한된 형태의 연산 (대입연산, 주소값 반환을 목적으로 하는 &연산이나 구조체 변수의 크기를 반환하는 sizeof 연산 정도만 허용) 만 허용이 된다.
2. 구조체 변수 간 대입 연산의 결과는 멤버 대 멤버의 복사가 이루어진다.
3. 구조체 변수를 대상으로 덧셈이나 뺄셈연산을 하기 위해서는 함수의 정의를 통해 덧셈이나 뺄셈의 결과를 직접 정의해 주어야 한다. (각각의 구조체 안의 변수를 직접 정의해서 연산하는 함수)
3. 구조체를 정의하는 이유
1. 구조체를 정의하는 이유는 구조체를 통해서 연관 있는 데이터를 하나로 묶을 수 있는 자료형을 정의하여 데이터의 표현 및 관리를 용이하게 하고, 합리적인 코드를 작성하기 위함이다.
2. 구조체의 정의는 프로그램 구현에 있어서 절대적인 위치를 차지한다.
4. 구조체 vs. 공용체
1. 공용체는 union 이라는 키워드를 사용하여 정의하며, 공용체의 크기는 멤버 중에서 가장 크기가 큰 변수의 크기이다.
2. 구조체 변수가 선언되면, 구조체를 구성하는 멤버는 각각 할당이 되지만, 공용체 변수가 선언되면 공용체를 구성하는 멤버는 각각 할당되지 않고 그 중 크기가 가장 큰 멤버의 변수만 하나 할당되어 이를 공유하게 된다.
5. 공용체의 유용함은 다양한 접근방식을 제공하는 데 있다.
1. 공용체를 사용하면 하나의 메모리 공간을 둘 이상의 방식으로 접근할 수 있다. (예를 들어 공용체의 적절한 정의를 통해 4바이트 메모리 공간을 2바이트씩, 그리고 1바이트씩 나눠서 접근할 수 있다.)
6. 열거형 (Enumerated Type)의 정의와 의미
1. 열거형은 구조체와 공용체와 마찬가지로 자료형을 정의하는 방법으로 사용할 수 있다.
2. 열거형은 enum syllable 로 선언하여 사용하며, 저장이 가능한 값 자체를 정수의 형태로 결정한다.
![](https://t1.daumcdn.net/cfile/tistory/992D463C5BB104E917)
7. 열거형 상수의 값이 결정되는 방식
1. 열거형을 정의하는데 있어서 상수의 값을 명시하지 않으면, 열거형 상수의 값은 0에서부터 시작해서 1씩 증가하는 형태로 결정된다.
2. 앞서 정의된 상수가 있으면 앞의 상수보다 1이 증가된 값이 할당된다.
8. 열거형의 유용함은 이름있는 상수의 정의를 통한 의미의 부여에 있다.
1. 구조체와 공용체는 자료형의 정의에 의미가 있다. 변수를 선언하기 위해 자료형을 정의한다.
2. 열거형의 경우 연관이 있는 이름들을 동시에 상수로 선언하는데 의미가 있다. (Do, Re, Mi.. 와 같이 연관된 상수 정의)
3. 열거형의 유용함은 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 프로그램의 가독성을 높이는 데 있다.