반응형
구조체 개념
구조체란 사용자가 c언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이다. 구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다.
배열이 같은 타입의 변수 집합이라면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것이다.
이때 구조체를 구성하는 변수를 구조체의 멤버 또는 멤버 변수라고 한다.
구조체 정의와 선언
구조체 정의는 struct키워드를 사용한다.
struct 구조체이름
{
멤버변수1의 타입 멤버변수1의 이름;
멤버변수2의 타입 멤버변수2의 이름;
....
};
struct book
{
char title[30];
char author[30]
int price;
};
아래와 같이 변수를 선언할 수 있다.
struct book my_book;
혹은 구조체의 정의와 변수의 선언을 동시에 할 수도 있다.
struct book
{
char title[30];
char author[30]
int price;
} my_book;
typedef 키워드
typedef 키워드는 이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다.
구조체 변수를 선언하거나 사용할 때는 매번 struct 키워드를 사용해서 구조체임을 명시해야 했지만,
typedef 키워드를 사용하면 구조체에 새로운 이름을 선언해두어 struct 키워드를 사용하지 않아도 된다.
typedef struct book my_book;
아니면, 구조체를 정의할 때 typedef 선언을 동시에 할 수 있다.
typedef struct
{
char title[30];
char author[30];
int price;
} my_book;
구조체의 정의와 typedef 선언을 동시에 할 때는 구조체 이름을 생략할 수 있다.
구조체 멤버로의 접근방법
my_book.author
멤버연산자 (.) 를 사용한다.
구조체 변수의 초기화
my_book = {.title ="HTML", .author = 홍길동, .price = 28000};
이렇게 원하는 멤버만 초기화가 가능하고, 정의된 순서와 초기화순서는 아무런 상관이 없고, 초기화하지 않은 멤버의 변수는 0으로 초기화된다.
my_book = {"HTML", "홍길동", 28000};
멤버변수의 번호 순서대로 적으면 멤버명의 생략이 가능하다.
반응형
'Programming > Data Structure' 카테고리의 다른 글
C언어로 리스트 구현하기 (배열) (0) | 2022.04.11 |
---|---|
[자료구조] C언어 연결리스트 스택 구현 (0) | 2022.04.11 |
포인터, 배열, 구조체 (0) | 2022.03.31 |
C언어를 활용한 스택자료구조 구현 (포인터 개념 제외) (0) | 2022.03.30 |
List Interface (리스트 인터페이스) (0) | 2022.03.25 |