➜ 정수형, 실수형, 상수, printf, scanf, 문자열
➜ 반복문 | for, while, do-while, 이중 for문(구구단 예시)
➜ 조건문 | if, else if, else, break, continue, rand(), srand()
➜ 함수(function) | 선언과 정의, 반환값, 파라미터(매개변수)
➜ 배열(Array) | 문자열 초기화, 크기와 메모리, 문자열 함수, sizeof(),
널(null) 문자('\0')
➜ 다차원 배열(Multi-Demetional Arrays)
➜ 포인터(pointer) 개념 완벽이해하기(ft. 미션맨과 스파이의 임무)
➜ 구조체(Struct) | 구조체 포인터, typedef
➜ 자주 쓰이는 '내장함수' 정리 | 파일입출력, 문자열처리, 수학, 포인터
관련 함수
1. 구조체(Struct)란?
- 구조체는 C 프로그래밍에서 사용되는 사용자 정의 데이터 타입으로, 서로 관련된 여러 변수를 하나의 자료형으로 묶어서 표현하는 것을 말한다.
- 일반적으로 구조체를 사용하여 여러 개의 변수를 하나로 묶어서 코드의 가독성을 높이고, 데이터를 효율적으로 관리하는 데 사용된다.
- 구조체를 정의할 때는 struct 키워드를 사용하며, 각 변수들을 멤버로 가진다.
- 예를 들어, 게임 정보를 표현하는 구조체를 만든다면 게임의 이름, 발매년도, 가격, 제작사 등의 변수들을 멤버로 갖는 구조체를 선언할 수 있다.
struct GameInfo
{
char *name;
int year;
int price;
char *company;
};
- 위와 같이 struct 키워드를 사용하여 구조체를 정의한다.
- 이제 GameInfo`라는 자료형으로 게임 정보를 표현할 수 있다.
2. 구조체 사용하기
- 구조체를 정의한 후에는 구조체 변수를 선언하여 사용할 수 있다.
- 구조체 변수를 사용할 때는 . 연산자를 이용하여 각 멤버 변수에 접근한다.
- 예를 들어, 게임 정보 구조체를 선언한 후 해당 변수의 각 멤버에 값을 할당할 수 있다.
struct GameInfo GameInfo1; // 구조체 변수 선언
GameInfo1.name = "더킹게임";
GameInfo1.year = 2023;
GameInfo1.price = 500;
GameInfo1.company = "두슬회사";
- 위와 같이 구조체를 선언하고 멤버 변수들에 값을 할당할 수 있다.
- 또한 구조체를 배열처럼 초기화할 수도 있다.
struct GameInfo GameArray[2] = {
{"더킹게임", 2023, 500, "두슬회사"},
{"더퀸게임", 2023, 1000, "세슬회사"}};
3. 구조체 포인터
- 구조체 포인터는 구조체 변수의 주소를 가리키는 포인터 변수이다.
- 포인터를 이용하면 구조체 멤버에 더 쉽게 접근할 수 있다.
struct GameInfo *GamePtr; // 구조체 포인터 선언
GamePtr = &GameInfo1; // 구조체 변수의 주소를 포인터에 저장
// 구조체 멤버에 접근하는 방법
printf("게임명: %s\n", GamePtr->name);
printf("발매년도: %d\n", GamePtr->year);
printf("가격: %d\n", GamePtr->price);
printf("제작사: %s\n", GamePtr->company);
4. 구조체 안에 구조체 사용
- 구조체 안에 다른 구조체를 멤버로 사용할 수 있다.
struct GameInfo
{
char *name;
int year;
int price;
char *company;
struct GameInfo *friendGame; // 연관 업체 게임
};
5. typedef를 이용한 구조체 별칭 설정
- typedef를 이용하여 구조체에 별칭을 지정할 수 있다.
- 이를 활용하면 보다 간결하고 가독성이 좋은 코드를 작성할 수 있다.
typedef struct GameInfo GAME_INFO;
// 사용 예시
GAME_INFO game;
game.name = "더프린스 게임";
game.year = 2022;
위와 같이 GAME_INFO라는 별칭을 사용하면, struct GameInfo를 사용하는 것보다 더 간단하게 구조체를 선언할 수 있다.
'C' 카테고리의 다른 글
[C언어] 자주 쓰이는 '내장함수' 정리 | 파일입출력, 문자열처리, 수학, 포인터 관련 함수 (0) | 2023.08.24 |
---|---|
[C언어] 포인터(pointer) 개념 완벽이해하기(ft. 미션맨과 스파이의 임무) (0) | 2023.08.11 |
[C언어] 다차원 배열(Multi-Demetional Arrays) (0) | 2023.08.07 |
[C언어] 배열(Array) | 문자열 초기화, 크기와 메모리, 문자열 함수, sizeof(), 널(null) 문자('\0') (0) | 2023.08.05 |
[C언어] 함수(function) | 선언과 정의, 반환값, 파라미터(매개변수) (0) | 2023.08.03 |