• 검색 결과가 없습니다.

제9장 구조체

N/A
N/A
Protected

Academic year: 2022

Share "제9장 구조체"

Copied!
46
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

2016년2학기 고급컴퓨터프로그래밍및실습 (36342-02)

제9장 구조체

1

(2)

구조체

• 구조체 변수, 초기화

• 구조체 배열, 구조체 포인터

공용체와 열거체

typedef

목차

2

(3)

구조체 : 관련 변수의 묶음

3

(4)

구조체의 정의

 새로운 데이터형을 선언하는 것이다.

 메모리는 구조체형 변수를 선언할 때 할당된다.

 구조체의 멤버 : 변수, 배열, 포인터 등

4

(5)

구조체의 크기

 구조체의 크기는 모든 멤버들의 크기의 합보다 크거나 같다.

 메모리 정렬 때문에 멤버들 사이에 패딩이 들어갈 수도 있다.

 구조체의 크기를 구하려면 sizeof 연산자를 이용해야 한다.

5

(6)

구조체 변수의 선언(1/3)

6

(7)

구조체 변수의 선언(2/3)

7

(8)

구조체 변수의 선언(3/3)

 구조체를 정의하면서 구조체 변수를 함께 선언할 수 있다.

 구조체를 정의와 변수를 함께 선언할 때 태그명을 생략할 수 있다.

8

(9)

구조체 변수의 사용(1/2)

 구조체의 멤버에 접근할 때는 멤버 접근 연산자인 .를 이용한다.

9

(10)

구조체 변수의 사용(2/2)

10

(11)

구조체 변수의 초기화

 { } 안에 멤버들의 초기값을 순서대로 나열한다.

 { } 안에 지정한 초기값이 멤버의 개수보다 부족하면 나머지 멤버들은 0 으로 초기화된다.

11

(12)

student 구조체의 정의 및 사용 예(1/2)

12

구조체의 정의

구조체 변수의 선언

구조체 변수의 선언 및 초기화

(13)

student 구조체의 정의 및 사용 예(2/2)

13

(14)

point 구조체 정의, 사용 예

14

구조체의 정의

구조체 변수의 선언

구조체 변수의 값 입력 수학 관련 라이브러리 헤더

구조체 변수의 값 입력

두 점 사이의

거리 구하기

(15)

구조체 간의 초기화 및 대입(1/2)

 같은 구조체형의 변수들끼리는 서로 초기화나 대입이 가능하다.

구조체간의 초기화 : 멤버 대 멤버 초기화

 동일한 멤버 간에 1:1로 복사해서 초기화

구조체간의 대입 : 멤버 대 멤버 대입

15

(16)

구조체 간의 초기화 및 대입(2/2)

16

(17)

구조체 간의 초기화 및 대입

17

구조체 변수의 선언 및 초기화 구조체 간의 초기화

구조체 간의 대입

(18)

구조체 간의 비교

 구조체 변수 간에는 직접 비교 연산을 할 수 없다.

 두 구조체 변수의 값이 같은지 비교하려면 구조체 변수끼리 비교하는 대신 멤버 대 멤버로 비교해야 한다.

18

(19)

구조체 배열(1/3)

19

(20)

구조체 배열(2/3)

 구조체 배열 원소의 멤버 접근

20

(21)

구조체 배열(3/3)

21

 구조체 배열 초기화

(22)

구조체 배열을 이용한 성적 처리 프로그램(1/3)

22

구조체의 정의 구조체 배열의 크기

구조체 배열의 선언

(23)

구조체 배열을 이용한 성적 처리 프로그램(2/3)

23

구조체 배열의 입력

학생별 평균 계산

학급 평균 계산

(24)

구조체 배열을 이용한 성적 처리 프로그램(3/3)

24

구조체 배열의 출력

(25)

구조체 포인터(1/2)

 구조체 변수의 주소를 저장하는 포인터

25

(26)

구조체 포인터(2/2)

 구조체 포인터로 구조체의 멤버에 접근할 때는 -> 연산자를 사용한다.

 구조체 변수로 멤버에 접근할 때는 . 연산자를 사용한다.

26

(27)

구조체 포인터의 사용 예(1/2)

27

구조체의 정의

구조체 포인터를 매개변수로 갖는 함수 선언

구조체 변수의 주소를 함수의 인자로 전달

(28)

구조체 포인터의 사용 예(2/2)

28

구조체 포인터를 인자로 갖는

함수 정의

(29)

비트필드(1/3)

 구조체가 가진 멤버를 비트 단위로 사용한다.

 비트필드 정의: 멤버 이름 다음에 :을 쓰고 비트 수를 적는다.

29

(30)

비트필드(2/3)

 메모리에 할당할 때, 첫 번째 멤버를 최하위 비트에서부터 할당한다.

 비트필드의 멤버에 주어진 비트로 표현 가능한 범위 밖의 값을 저장하면 오 버플로우가 발생한다.

 비트필드도 구조체와 같은 방법으로 사용한다.

30

(31)

비트필드(3/3)

 비트필드를 정의할 때는 중간에 일부 비트를 비워두고 멤버를 특정 비트에 할당할 수있다.

31

(32)

비트필드의 사용 예

32

비트필드의 정의

비트필드 변수의 선언

비트필드의 크기

(33)

공용체와 열거체

 공용체: 여러 멤버들이 메모리를 공유해서 사용한다.

 공용체를 정의하면 공용체도 구조체처럼 새로운 데이터형이 된다.

33

(34)

공용체의 사용(1/3)

 공용체 변수의 멤버들은 모두 같은 주소에 할당된다.

 공용체의 크기 : 멤버 중 가장 큰 멤버의 크기

34

(35)

공용체의 사용(2/3)

 공용체 변수를 초기화할 때는 첫 번째 멤버의 초기값만 지정한다.

 공용체의 멤버에 접근할 때도 . 와 -> 연산자를 사용한다.

35

(36)

공용체의 사용(3/3)

공용체의 멤버들은 동시에 사용되지 않는다.

 job_code가 0이면 job_info 공용체 변수의 school_name을 사용하고, job_code가 1이면 company_name을 사용한다.

 공용체의 멤버인 school_name과 company_name이 동시에 사용되는 경우는 없으며, 항상 둘 중 한 가지 값을 저장하는 용도로 사용된다.

36

(37)

공용체의 사용 예

37

(38)

구조체와 공용체의 비교

38

공용체의 정의

구조체의 정의

(39)

열거체

 나열된 정수 값 중 하나를 갖는 정수형의 일종

39

(40)

열거체의 사용

 열거체도 일종의 사용자 정의형이므로 열거체를 일단 정의하고 나면, 열 거체형의 변수를 선언하거나 배열 또는 구조체를 선언할 수 있다.

 열거체 변수에는 열거체 정의에 나열된 열거 상수 중 하나를 저장하고 사 용한다.

 열거 상수만 정수형 상수로 정의할 수도 있다.

 열거체와 열거 상수는 프로그램의 가독성(readability)을 향상시키는 기능 이다.

40

(41)

열거체의 사용

41

(42)

typedef

 typedef는 기존의 데이터형에 새로운 이름을 붙인다.

42

(43)

구조체와 typedef

 구조체, 공용체, 열거체를 정의할 때, typedef가 유용하게 사용된다.

 typedef 정의 후에도 원래 데이터형을 그대로 사용할 수도 있다.

43

(44)

typedef 사용 예

44

typedef 정의

같은 구조체 변수 간의 대입 구조체의 정의

(45)

typedef 사용 목적 (1/2)

프로그램의 이식성을 향상시키기 위한 목적으로 사용된다.

45

(46)

typedef 사용 목적 (2/2)

프로그램의 가독성을 향상시키기 위한 목적으로 사용된다.

46

참조

관련 문서

Information or Retrieval 높은 재현율, 낮은 정확율 좁은 질의:. Information adjacent Retrieval 높은

- 치료자는 내담자와 함께 목표를 설정하고 내담자 문제의 해결책과 성공방법을 발견 하도록 도와 내담자의 변화를 도모한다... •

높은 학생을 선발하여서 장학금을 수여한다. 가장 평점이 높은 학생을 찾아서 학생의 이름과 학번, 평점을 화면에 출력하는 프로그램을 작성하여 보자.. 복소수를

 person이라는 구조체를 만들어보자. 이 구조체에는 문자 배열로 된 이름, 사람의 나이를 나타내는 정수값, 각 개인 의 월급을 나타내는 float값 등이 변수로

CHAP 3:배열,

주어진 여건하에서 원하는 것을 극대화 또는 원하지 않는 것을 극소화하는 것으로 경제주체가 주어진. 여건하에서 목적의 극대화 또는 극소화를 달성하는데 여러 가지 대안

® 모든 생산요소의 투입량을 각각 λ배 증가시켰을 때 생산량의 증가가 λ배 이상으로 나타나는 경우. ® k>1이면 규모에

 컴퓨터공학과의 김이화 학생과 환경공학과의 홍이화 학생의 정보를 저장 하고자 한다... (예제2) 학과 주소를