구조체
함수내에서 사용할때
int main(void){
struct student s1;//구조체 변수 선언
...
}
구조체 초기화
//함수 밖에서도 초기화 가능한듯
struct student s1={24,"KIM",4.3};
//number=24, name[0]='K',name[1]='I', name[2]='M', name[3]=\0, grade=4.3
구조체 멤버의 접근
- 구조체 변수의 멤버에 접근할라면 dot(.)연산자 사용
Typedef 이용
typedef struct student{
int number; //학번
char name[10]; //이름
double grade; //학점
} STUDENT;//1.이런식으로 쓰기도 하고
typedef struct student STUDENT; //2. 이렇게 쓰기도 함.STUDENT가 struct student를 대신하도록 typedf 선언
int main(void){
STUDENT st1;
...
return 0;
}
typedef와 #define 비교
- 이식성을 높여준다.
- #define을 이용해도 typedef랑 비슷한 효과를 낼수있다.
구조체 변수 활용
- 함수 인자로 전달, 반환 가능
- 대입연산자, 피연산자 사용 가능
- 사칙연산 불가능
구조체와 구조체 포인터
void ShowPersonData(person * ptr){ //구조체 person의 주소 값을 인자로 전달
prtinf("이름: %s \n", (*ptr).name);
printf("주민등록번호: %s \n",(*ptr).ID); //1. 이런식으로 구조체 변수에 접근
printf("나이: %u \n", ptr->age); //2. 이런식으로도 구조체 변수에 접근 가능
}
- (*ptr).name //구조체 자체를 불러옴
- ptr->age //위와 동일
- (*ptr).name과 ptr->name은 완전히 동일
구조체 변수도 구조체의 멤버가 될수 있다.
공용체(union)
- 같은 메모리 영역을 여러개의 변수가 공유
- 가장 큰 메모리형 기준
- 덮어쓰기
열거형 선언
- enum days{ Sun, Mon, Tue, Wed, Thu, Fri, Sat };
- 변수가 가질 수 있는 값들을 미리 열거해놓은 자료형
- days란 변수에 열거되있는 값중 하나의 값만 가질 수 있다.
- 값을 지정하지 않으면 0부터 할당
enum days today; // 열거형 변수 선언
today=Sun;