Gae Ko's Blog

[C] 구조체 본문

프로그래밍언어/C

[C] 구조체

Gae Ko 2018. 3. 18. 18:12

구조체 


1
2
3
struct 구조체이름 {
    자료형 멤버이름;
};
cs


구조체를 위와 같이 정의하였으면 반드시 변수로 선언해서 사용하여야만 한다.


struct 구조체이름 변수이름;  // 구조체 변수 선언 


1
2
3
struct 구조체이름 {
    자료형 멤버이름;
} 변수;
cs


위와 같이 구조체를 정의와 동시에 변수를 선언할 수 있다. 

// 대부분 구조체 정의는 main함수 밖에 쓴다. main함수 내에 쓰면 그 안에서만 사용할 수 있으니까

// 구조체 정의를 두번째 방법으로 하면 이때 생성되는 변수는 전역변수가 된다. 


구조체 변수를 선언할 때마다 struct을 써주는게 너무 귀찮다...

쓰기 싫어... 어떻게 하면?

typedef를 사용하면 struct키워드를 생략할 수 있다. typedef로 구조체를 정의하면서 별칭(alias)을 지정해주면 된다.


1
2
3
typedef struct 구조체이름 {
    자료형 멤버이름;
} 구조체별칭;
cs


typedef로 구조체 별칭을 만들었다면 변수선언은 다음과 같이 하면 된다.


구조체별팅 변수이름;  // 구조체 변수 선언 



※ [참고] typedef 활용법

typedef는 자료형의 별칭을 만드는 기능이다. 따라서 구조체뿐만 아니라 모든 자료형의 별칭을 만들 수 있다.

그래서 typedef로 정의한 별칭을 사용자 정의 자료형 또는 사용자 정의 타입이라도 부른다.


typedef 구조체 별칭을 정의할 때 매번 구조체 이름을 지정해주려니 그것도 귀찮다....

이때는 익명 구조체(anonymous structure)를 사용하면 구조체이름을 지정해주지 않아도 된다. 즉 typedef로 구조체를 정의하면서 이름을 생략할 수 있음.

1
2
3
typedef struct {
    자료형 멤버이름;
} 구조체별칭;
cs


변수는 구조체 별칭으로 선언하면 된다. 


이렇게 생성한 사용자 정의 type ==> java에서 하나의 class역할 한다고 볼 수 있다. (c를 객체로 생각하는 관점)


구조체 포인터 사용하기  링크 


[참고] https://dojang.io/mod/page/view.php?id=407