예시: book이라는 이름의 구조체 정의 및 book 구조체의 타입을 가진 my_book 구조체 변수 선언하기
struct book
{
char title[30];
char author[30];
int price;
} my_book;
4. typedef 키워드 사용하여 선언하기
typedef 키워드는 이미 존재하는 타입에 새로운 이름을 붙일 때 사용
보통 구조체 변수를 선언하거나 사용할 때에는 매번 struct 키워드를 사용하여 구조체임을 명시해야 함
하지만 typedef 키워드를 사용하여 구조체에 새로운 이름을 선언하면 매번 struct 키워드를 사용하지 않아도 됨
typedef struct 구조체이름 구조체의새로운이름;
예시:
typedef struct book TEXTBOOK;
예시: 구조체의 정의와 typedef 선언을 동시에 진행
typedef struct (구조체이름)
{
멤버변수1의타입 멤버변수1의이름;
멤버변수2의타입 멤버변수2의이름;
...
} 구조체의새로운이름;
/* 구조체의 정의와 typedef 선언을 동시에 할 때에는 구조체의 이름을 생략 가능 */
typedef struct {
char title[30];
char author[30];
int price;
} TEXTBOOK;
03 구조체 접근 및 사용
1. 구조체 접근하기
배열에서는 인덱스를 이용하여 배열 요소에 접근 가능하나 구조체에서 구조체 멤버로 접근하려고 할 때는 멤버 연산자(.) 사용 필수
note: 구조체의 주소값과 구조체의 첫 번째 멤버 변수의 주소값은 언제나 같음
구조체변수이름.멤버변수이름
/* 예시 */
my_book.author
2. 구조체 변수 초기화하기
구조체 변수를 초기화할 때에는 멤버 연산자(.)와 중괄호({})사용
이 방법 사용 시 원하는 멤버 변수만을 초기화 가능
이때 멤버 변수가 정의된 순서와 초기화하는 순서는 상관이 없으며, 초기화하지 않은 멤버 변수는 0으로 초기화됨
또한, 배열의 초기화와 같은 방법으로 구조체 변수를 초기화 가능
구조체변수이름 = {.멤버변수1이름 = 초깃값, .멤버변수2이름 = 초깃값, ...};
/* 예시 */
struct book
{
char title[30];
char author[30];
int price;
};
int main(void)
{
struct book my_book = {"HTML과 CSS", "홍길동", 28000};
struct book java_book = {.title = "Java language", .price = 30000};
printf("첫 번째 책의 제목은 %s이고, 저자는 %s이며, 가격은 %d원입니다.\n",
my_book.title, my_book.author, my_book.price);
printf("두 번째 책의 제목은 %s이고, 저자는 %s이며, 가격은 %d원입니다.\n",
java_book.title, java_book.author, java_book.price);
return 0;
}
결과:
첫 번째 책의 제목은 HTML과 CSS이고, 저자는 홍길동이며, 가격은 28000원입니다.
두 번째 책의 제목은 Java language이고, 저자는 이며, 가격은 30000원입니다.
예시: 구조체에 typedef 키워드를 사용하여 새로운 이름을 선언한 후 사용하기
#include <stdio.h>
typedef struct
{
char title[30];
char author[30];
int price;
} TEXTBOOK;
int main(void)
{
TEXTBOOK my_book = {"HTML과 CSS", "홍길동", 28000};
TEXTBOOK java_book = {.title = "Java language", .price = 30000};
printf("첫 번째 책의 제목은 %s이고, 저자는 %s이며, 가격은 %d원입니다.\n",
my_book.title, my_book.author, my_book.price);
printf("두 번째 책의 제목은 %s이고, 저자는 %s이며, 가격은 %d원입니다.\n",
java_book.title, java_book.author, java_book.price);
return 0;
}
결과:
첫 번째 책의 제목은 HTML과 CSS이고, 저자는 홍길동이며, 가격은 28000원입니다.
두 번째 책의 제목은 Java language이고, 저자는 이며, 가격은 30000원입니다.