| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 항해99
- 운영체제
- 플로이드-워셜
- 코딩테스트
- 파이썬
- 자료구조
- 코드트리
- 갭체크
- 코딩테스트사이트추천
- 프로그래머스
- 웹
- til
- 자바스크립트
- 알고리즘
- 데이터베이스
- Java
- 티스토리챌린지
- 개발자루틴
- 인접 행렬
- 1일1코테
- 연결 리스트
- 코테공부
- 개발자취업
- 오블완
- 자바
- C
- 99클럽
- 프로그래밍 언어
- 코딩테스트준비
- #코드트리 #코딩테스트 #코테공부 #백트래킹 #알고리즘 기초
- Today
- Total
와드의 블로그
18. 구조체 본문
(1) typedef 문법
* typedef 문법 사용하기
typedef 문법은 기존의 자료형 중에 자료형 이름의 길이가 긴 경우 프로그래머가 짧고 간결하게 자료형을 재정의하는 문법이다. #define과 기능이 비슷해 보이지만 #define은 치환 작업을 수행하는 전처리기이고 typedef는 기존 자료형을 다른 이름으로 새롭게 정의하는 기능이다.
typedef unsigned short int US // unsigned short int형을 US라는 새로운 이름으로 정의한다.
* typedef의 장점
typedef는 일반 변수 형식뿐만 아니라 배열, 포인터와 같은 형식도 재정의할 수 있다.
typedef는 소스 코드 전체의 자료형을 쉽게 바꿀 수 있다.
(2) 데이터를 그룹으로 묶는 구조체
* 데이터의 그룹화 1: 배열
배열을 이용하면 같은 형태의 데이터를 묶어서 관리할 수 있다. 하지만 배열은 같은 자료형의 데이터만 그룹으로 묶을 수 있다. 따라서 int 형의 데이터와 double 형의 데이터를 한 번에 관리할 수 없다.
* 데이터의 그룹화2: 구조체
구조체는 크기나 형식이 다른 데이터를 그룹으로 묶어 관리할 수 있다.
※ 구조체의 선언과 typedef의 사용
typedef struct People { // struct People 구조체 선언
char name[12]; // typedef를 이용해 struct People -> Person
int age;
float height, weight;
}Person;
* 구조체로 선언한 변수의 요소 사용하기
typedef struct People { // struct People 구조체 선언
char name[12]; // typedef를 이용해 struct People -> Person
int age;
float height, weight;
}Person;
int main()
{
Person p;
p.age = 11; // [구조체 변수 이름.요소 이름]을 통해 요소에 접근할 수 있다.
p.height = 181.1;
return 0;
}
* 구조체로 선언한 변수의 포인터로 사용하기
다음과 같이 Person형 변수의 주소를 *Person형 포인터 변수에 저장해서 사용할 수 있다.
Person data;
Person* p;
p = &data;
(*p).age = 23;
이때 * 연산자의 우선순위가 . 연산자보다 낮아서 괄호를 사용해야 한다.
※ 연산자 우선순위 문제를 해결하는 -> 연산자
이러한 연산자 우선순위 문제를 해결하기 위한 -> 연산자를 제공한다. -> 연산자는 * 연산자와 . 연산자를 사용하지 않고 하나의 연산자로 사용한다.
Person data;
Person* p;
p = &data;
p->age = 23;
※ 구조체 문법으로 선언한 변수의 초기화 방밥
구조체 변수는 배열과 마찬가지로 선언할 때 초기화하려면 중괄호를 사용한다.
참조자료: C언어 입문
'프로그래밍 언어 > C' 카테고리의 다른 글
| 20. 함수 포인터 (0) | 2021.09.18 |
|---|---|
| 19. 파일 입출력 (0) | 2021.09.18 |
| 17. 다차원 포인터 (0) | 2021.09.17 |
| 16. 메모리 할당 (0) | 2021.09.17 |
| 15. 배열과 포인터 (0) | 2021.09.17 |