구조체
- 데이터를 하나로 모으기 위함
- 지금까진 개별 변수로 나타냈음.
struct student{ int number; //학번 char name[10]; //이름 double grade; //학점 };//세미콜론 잊지말기!!!
함수내에서 사용할때
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;
'Computer Science > C\C++' 카테고리의 다른 글
[C언어] 파일 입출력 (0) | 2021.06.02 |
---|---|
[C언어] malloc 동적할당을 이용한 배열 출력, 역으로 출력(포인터, 이중포인터) (0) | 2021.05.31 |
[C언어] 문자 역으로 출력, strncat/strlen활용 (0) | 2021.05.26 |
[C언어] puts, printf / gets, scanf(scanf_s) (0) | 2021.05.22 |
[C언어] 함수 중심의 포인터 활용 (0) | 2021.05.19 |