struct 구조체이름
{
멤버변수1의타입 멤버변수1의이름;
멤버변수2의타입 멤버변수2의이름;
...
};
ex)
struct student { // struct = 키워드 student = 구조체 이름
int number; // 구조체 student의 멤버변수
char name[10]; // 구조체 student의 멤버변수
int year; // 구조체 student의 멤버변수
char major[10]; // 구조체 student의 멤버변수
char phone_number[20]; // 구조체 student의 멤버변수
};
struct 구조체이름 구조체변수이름;
ex)
struct book my_book;
struct 구조체이름
{
멤버변수1의타입 멤버변수1의이름;
멤버변수2의타입 멤버변수2의이름;
...
} 구조체변수이름;
ex)
struct book
{
char title[30];
char author[30];
int price;
} my_book;
typedef 란? -> 이미 존재하는 타입에 새로운 이름(별명)을 붙일 때 사용
문법
typedef struct (구조체이름) // 구조체 정의와 선언 동시에 할 경우 구조체 이름 생략 가능
{
멤버변수1의타입 멤버변수1의이름;
멤버변수2의타입 멤버변수2의이름;
...
} 구조체의새로운이름;
ex)
typedef struct {
char title[30];
char author[30];
int price;
} TEXTBOOK;
구조체에서 구조체 멤버로 접근하려고 할 때 사용
문법
구조체변수이름.멤버변수이름
ex)
my_book.author
ex)
#include <stdio.h>
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;
}
ex)
#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;
}