문타쿠, 공부하다.
[C언어 코딩 도장] Unit 48. 구조체 사용하기 본문
INTRO
구조체란?
- 자료를 체계적으로 관리하기 위한 문법
- struct 키워드로 정의
struct Person
{
char name[20];
int age;
char address[100];
};
48.1 구조체를 만들고 사용하기
방법 1) 구조체 정의와 구조체 변수 선언을 따로하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
// 구조체 정의
struct Person
{
char name[20]; // 구조체 멤버 1
int age; // 구조체 멤버 2
char address[100]; // 구조체 멤버 3
};
int main(void)
{
// 구조체 변수 선언
struct Person p1;
// 점으로 구조체 멤버에 접근하여 값 할당
strcpy(p1.name, "홍길동");
p1.age = 30;
strcpy(p1.address, "서울시 용산구 한남동");
// 점으로 구조체 멤버에 접근하여 값 출력
printf("이름: %s\n", p1.name);
printf("나이: %d\n", p1.age);
printf("주소: %s\n", p1.address);
return 0;
}
방법 2) 구조체를 정의하는 동시에 변수를 선언하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
// 구조체 정의
struct Person
{
char name[20];
int age;
char address[100];
} p1; // 구조체를 정의하는 동시에 변수 p1 선언
int main(void)
{
// 점으로 구조체 멤버에 접근하여 값 할당
strcpy(p1.name, "홍길동");
p1.age = 30;
strcpy(p1.address, "서울시 용산구 한남동");
// 점으로 구조체 멤버에 접근하여 값 출력
printf("이름: %s\n", p1.name);
printf("나이: %d\n", p1.age);
printf("주소: %s\n", p1.address);
return 0;
}
방법 3) 구조체 변수를 선언하는 동시에 초기화하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct Person
{
char name[20];
int age;
char address[100];
};
int main(void)
{
// 방법 3-1
struct Person p1 = { .name = "홍길동", .age = 30, .address = "서울시 용산구 한남동" };
printf("이름: %s\n", p1.name);
printf("나이: %d\n", p1.age);
printf("주소: %s\n\n", p1.address);
// 방법 3-2
struct Person p2 = { "고길동", 40, "서울시 서초구 반포둥" };
printf("이름: %s\n", p2.name);
printf("나이: %d\n", p2.age);
printf("주소: %s\n", p2.address);
return 0;
}
48.2 typedef로 struct 키워드 없이 구조체 선언하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
// 구조체 이름은 _Person
typedef struct _Person
{
char name[20];
int age;
char address[100];
} Person; // typedef를 사용하여 구조체 별칭을 Person으로 정의
int main(void)
{
Person p1; // 구조체 별칭 Person으로 변수 선언
strcpy(p1.name, "홍길동");
p1.age = 30;
strcpy(p1.address, "서울시 용산구 한남동");
printf("이름: %s\n", p1.name);
printf("나이: %d\n", p1.age);
printf("주소: %s\n", p1.address);
return 0;
}
48.3 익명 구조체 사용하기
익명 구조체란?
- typedef 구조체 별칭을 정의할 때 구조체 이름을 지정하지 않아도 되는 것
- 즉, typedef로 구조체를 정의하면서 이름을 생략할 수 있다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
// 구조체 이름이 없는 익명 구조체
typedef struct
{
char name[20];
int age;
char address[100];
} Person; // typedef를 사용하여 구조체 별칭을 Person으로 정의
int main(void)
{
Person p1; // 구조체 별칭 Person으로 변수 선언
strcpy(p1.name, "홍길동");
p1.age = 30;
strcpy(p1.address, "서울시 용산구 한남동");
printf("이름: %s\n", p1.name);
printf("나이: %d\n", p1.age);
printf("주소: %s\n", p1.address);
return 0;
}
struct 태그
{
자료형 멤버이름;
};
typedef struct 태그
{
자료형 멤버이름;
} 타입이름;
// 태그와 타입이름은 같아도 괜춘
typedef struct
{
자료형 멤버이름;
} 타입이름;
'C언어 > C언어 코딩 도장' 카테고리의 다른 글
[C언어 코딩 도장] Unit 49. 구조체 포인터 사용하기 (0) | 2023.10.29 |
---|---|
[C언어 코딩 도장] Unit 48. 연습문제 및 심사문제 (0) | 2023.10.29 |
[C언어 코딩 도장] Unit 47. 연습문제 및 심사문제 (0) | 2023.10.03 |
[C언어 코딩 도장] Unit 47. 회문 판별과 N-gram 만들기 (0) | 2023.10.03 |
[C언어 코딩 도장] Unit 46. 연습문제 및 심사문제 (0) | 2023.10.03 |