1. 구조체의 개념
구조체란 서로 관련이 있는 임의의 자료형의 값들로 구성된 사용자 정의 타입이다. 즉, 관련 있는 자료라면 자료형이 달라도 상관없다. 자바와 파이썬 같은 객체지향 언어의 클래스와 성격이 비슷하다고 한다.
2. 구조체 선언과 변수 선언
다음은 은행 정보와 관련된 구조체 선언 예시이다.
은행 정보에는 예금주, 계좌번호, 잔액, 이율, 비밀번호가 들어갈 것이다.
#include <stdio.h>
struct account {
char name[20]; //예금주 명 (19자리까지 저장가능)
int account_number; //계좌번호
double balance; //잔액
double interest; //이율
int password; //비밀번호
}myaccount; //main 밖에 적었으므로 전역변수
int main(void)
{
myaccount = { "디혜", 110123, 50000, 1.2, 1234 }; //전역변수
struct account youraccount = { "홍길동", 110456, 3000, 1.2, 5678 }; //지역변수
}
자바의 클래스와 비슷한 개념으로 생각하자면,
account - 클래스
myaccount - 인스턴스
name - 프로퍼티
라고 생각할 수 있다.
위 방법처럼 struct로 구조체를 선언할 수도 있지만, 구조체를 하나의 자료형으로 선언할 수도 있다.
#include <stdio.h>
typedef struct account {
char name[20]; //예금주 명 (19자리까지 저장가능)
int account_number; //계좌번호
double balance; //잔액
double interest; //이율
int password; //비밀번호
}account; //account라는 자료형 만듦.
int main(void) {
account myaccount = { "디혜", 110123, 50000, 1.2, 1234 };
printf("예금주: %s\n", myaccount.name);
printf("계좌번호: %d\n", myaccount.account_number);
printf("계좌 잔액: %.1lf\n", myaccount.balance);
printf("이율: %.1lf\n", myaccount.interest);
printf("비밀번호: %d", myaccount.password);
return 0;
}
typedef는 형태를 정의한다는 뜻으로 account라는 자료 형태를 정의하고 myaccount라는 변수를 만들었다.
구조체안의 변수에 대한 접근은 .(속성이름)으로 할 수 있다.
'C언어' 카테고리의 다른 글
[C언어] call by value와 call by reference (0) | 2021.07.14 |
---|---|
[C언어] 포인터 - 개념, *연산자, 배열, 동적할당 (0) | 2021.07.13 |