일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준 1707번
- 트리(Tree)
- 큐(Queue)
- 백준 17608번
- 알고리즘 개념
- 그리디 알고리즘(Greedy Algorithm)
- 백준 2504번
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- 백준 18352번
- 이분 탐색(Binary Search)
- 그래프(Graph)
- DFS
- BFS(Breadth First Search)
- 동적 프로그래밍(Dynamic Programming)
- 백준 10000번
- 백준 2493번
- 스택(Stack)
- DFS(Depth First Search)
- 백준 2812번
- BFS
- 위상 정렬(Topology Sort)
- 분할 정복(Divide and Conquer)
- 백준 1948번
- 백준 2261번
- 이분 그래프(Bipartite Graph)
- 위상 정렬(Topological Sort)
- 백준 9012번
- DFS & BFS
- 백준 21606번
- 다익스트라 알고리즘(Dijkstra Algorithm)
- Today
- Total
Always Be Wise
구조체란? 본문
구조체란 하나 이상의 변수를 묶어서 좀 더 편리하게 사용할 수 있도록 도와주는 도구를 의미한다.
자료형이 다른 변수를 사용하기 위해서는 하나하나 선언할 필요가 있다. 그런데 똑같은 구조의 변수를 여러번 사용해야 하는 경우
이는 굉장히 비효율적이다. 구조체는 새로운 자료형을 만드는 것과 같다고 할 수 있기 때문에, 보통 main 함수 전에 선언한다.
어떤 함수 안에 선언하면 그 함수 안에서만 사용할 수 있기 때문에 만약 main 함수 안에 선언한다면 main 함수 안에서만 사용할
수 있다. 구조체의 기본적인 형태는 아래와 같다.
struct 구조체 이름
{
구조체 멤버들
};
이렇게 선언하는 것만으로는 구조체를 바로 사용할 수 없고, 아래와 같이 main 함수 안에서 따로 선언을 해주어야 한다. 선언 시에는
struct로 선언했던 구조체의 이름과 앞으로 사용할 변수 이름을 써주면 된다. struct [구조체 이름] 까지가 int와 같은 자료형이라고
할 수 있다.
#include <stdio.h>
struct student
{
char name[15];
int s_id;
int age;
char phone_number[14];
};
int main()
{
struct student goorm;
printf("이름 : ");
scanf("%s", goorm.name);
printf("학번 : ");
scanf("%d", &goorm.s_id);
printf("나이 : ");
scanf("%d", &goorm.age);
printf("번호 : ");
scanf("%s", goorm.phone_number);
printf("이름 : %s, 학번 : %d, 나이 : %d, 번호 : %s\n", goorm.name, goorm.s_id, goorm.age, goorm.phone_number);
return 0;
}
위 코드에서 main 함수 안에 struct student goorm으로 선언하였다. 이렇게 되면 goorm의 자료형은 student 구조체가 된다.
선언한 후에는 구조체 멤버를 사용할 수 있다. 사용할 때에는 [변수이름.구조체 멤버의 이름]과 같은 형태로 작성하면 된다.
구조체 멤버의 값을 main에서 선언할 때 대입해서 초기화 할 수 있다. 초기화 할 때에는 멤버 연산자 .과 중괄호를 사용한다.
구조체는 배열처럼 멤버 전체를 초기화 할 수도 있고, 원하는 변수만을 초기화할 수도 있다. 아래 코드에서처럼 초기화 할 때에는
{.멤버이름 = 값}과 같은 형태로 초기화 할 수도 있으며, 멤버 이름을 적지 않고 초기화 할 수도 있다. 멤버 이름을 적지 않을 때는
구조체를 정의했던 순서대로 값이 들어간다. 또한 값을 넣어주지 않은 멤버는 0으로 초기화 된다.
#include <stdio.h>
struct student
{
int age;
char phone_number[14];
int s_id;
};
int main()
{
struct student goorm = { .age = 20, .phone_number = "010-1234-5678", 10 };
struct student codigm = { 22, "010-8765-4321"};
printf("나이 : %d, 번호 : %s, 학번 : %d\n", goorm.age, goorm.phone_number, goorm.s_id);
printf("나이 : %d, 번호 : %s, 학번 : %d\n", codigm.age, codigm.phone_number, codigm.s_id);
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
구조체 배열 (0) | 2021.12.04 |
---|---|
typedef를 이용한 구조체 선언 (0) | 2021.12.04 |
이중 포인터와 포인터 배열 (0) | 2021.12.04 |
상수 포인터 (0) | 2021.12.04 |
포인터 연산과 배열 (0) | 2021.12.04 |