650 likes | 898 Views
CHAPTER 11. 구조체. 구조체의 기본 개념과 특징을 이해한다 . 구조체의 정의와 변수 선언 방법을 공부한다 . 구조체 배열을 공부한다 . 구조체 포인터를 공부한다 . 함수 간의 구조체 전달에 대해 공부한다 . 동적 기억장소 할당에 대해 공부한다 . char 형 포인터와 동적 할당에 대해 공부한다. 11.0 개요 p.522. 구조체 사용자 정의 자료형 (user-defined data type) 다양한 자료형의 여러 값을 하나의 단위로 묶어서 편리하게 관리하고 사용.
E N D
구조체의 기본 개념과 특징을 이해한다. • 구조체의 정의와 변수 선언 방법을 공부한다. • 구조체 배열을 공부한다. • 구조체 포인터를 공부한다. • 함수 간의 구조체 전달에 대해 공부한다. • 동적 기억장소 할당에 대해 공부한다. • char형 포인터와 동적 할당에 대해 공부한다.
11.0 개요 p.522 • 구조체 • 사용자 정의 자료형(user-defined data type) • 다양한 자료형의 여러 값을 하나의 단위로 묶어서 편리하게 관리하고 사용
11.1 구조체란 p.523 • 변수 vs. 배열 vs. 구조체
11.1 구조체란 p.524 • 구조체의 장점 • 서로 관련된 정보를 하나의 단위로 관리 가능 • 구조체 통째로 하나의 인수로서 함수로 전달 가능 • 한 개의 대입문으로 구조체 안의 모든 정보를 대입 가능: [그림 11-3]
11.2 구조체 정의와 변수 선언 p.524 • 구조체 정의와 구조체 변수 선언 • C에서 제공하는 기본 자료형(int, double, char와 같은 )이 아니므로 반드시 구조체를 정의(템플릿 정의)한 후 구조체 변수를 선언해야 한다.
11.2.1 구조체 정의 p.525 • 구조체 구성 단위 • 구조체 멤버(member) 또는 필드(field) • 구조체 멤버는 자료형이 서로 달라도 됨
11.2.1 구조체 정의 p.525 요약으로이동하기 • 구조체 정의 • 반드시 구조체 정의를 먼저 해야 구조체 변수를 선언해서 사용 가능 • 주의 • 구조체 태그명과 멤버명은 같을 수 없다. • 함수 외부에서 구조체 정의 정의 아래쪽의 모든 함수에서 사용 가능함수 안에서 정의 함수에서만 사용 가능 • 구조체 정의는 기억장소 할당이아님 구조체에 데이터를 저장하려면 반드시 구조체 변수 선언이 필요
11.2.2 구조체 변수 선언 p.526 • 구조체 변수 선언 • 실제로 기억장소를 할당 받기 위해 필요
11.2.3 구조체 멤버 참조 p.526 • 구조체 멤버 참조 연산자 . 구조체 멤버를 참조하려면 반드시 어떤 구조체 변수의 멤버인진 명시해야 함
p.528 멤버 참조 연산자
11.2.4 구조체 변수의 초기화 p.529 • 구조체 변수를 선언과 동시에 초기화하기
11.2.5 구조체 간의 대입 p.530 • 같은 구조체 형 변수 하나의 대입문으로 모든 멤버 간 대입이 가능
11.2.5 구조체 간의 대입 p.531 • 구조체 간의 대입은 반드시 같은 자료형끼리만가능 • 구조체 템플릿은 같더라도 구조체 태그명이다르다면 대입문을사용 불가
11.2.6 자료형 이름 재정의: typedefp.532 시험에선 생략 [프로그램 11-9]에서 사용됨 • 자료형 이름의 재정의 • 자료형 재정의 장점 • 프로그램의 이식성 증가 • 자료형이름을 짧게 재정의하거나 읽기 쉽게 할 수 있다.
11.2.7 구조체를 이용한 프로그램 예 p.533 • 사용자 한명에 관련된 정보인 이름, 성별, 나이를 하나로 묶어서 관리할 수 있도록 person이란 새로운 구조체를 정의하여 저장한다. • 사용자 세 명의 정보를 저장할 구조체 변수 세 개는 선언하면서 초기화
11.2.7 구조체를 이용한 프로그램 예 p.533 • 최고령 사용자의 정보를 출력할 때 나이뿐만 아니라 이름과 성별도 출력하기 위해 최고령 사용자의 정보를 저장할 구조체 변수를 추가로 선언한다. • 나이가 많은 사람을 찾기 위해 비교할 값은 구조체 변수의 age 멤버이므로if (u1.age< u2.age)와 같이 멤버 단위로 비교를 해야 한다. • 그러나 사용자 정보는 모두 세 가지로 구조체 변수에 한꺼번에 저장되어 있으므로 u2의 모든 정보를 oldest에 저장할 때는 oldest = u2;와 같이 대입문으로 해결할 수 있다.
11.3 구조체 배열 p.536 요약 프로그램으로이동 p.538 Q) 종류가 서로 다른 3000개의 정보를 원소수가 3000개인 배열에 저장할 수 있을까? Q) 같은 구조체 형(서로 다른 종류의 멤버를 가짐) 정보 1000개는 원소수가 1000개인 배열에 저장할 수 있을까? 구조체도 일반 자료형처럼 배열의 자료형으로 사용 가능
11.3.1 구조체 배열 선언 p.536 • 구조체형 배열 선언: 배열의 각 원소는 구조체
11.3.1 구조체 배열 선언 p.536 • 구조체 배열을 선언과 동시에 초기화하기
11.3.2 구조체 배열 원소와 멤버 참조 p.537 • 구조체 배열 원소의 멤버 참조
사용자 10명의 이름, 성별, 나이 정보를 저장하는 구조체 배열을 선언하면서 초기화하기 p.538
[프로그램 11-2]와 [프로그램11-3]을 참고하여 [프로그램 11-3]에서 앞의 5명만 구조체 배열에 저장하여 5명의 정보를 출력한 후 나이가 제일 많은 사람의 정보를 max에 저장한 후 max의 멤버를 이용하여 최고령자 정보를 출력하기 나태희 20세 유현빈 29세 나원빈25세 문건영 22세 소지법 25세 최고령자: 유현빈(남) 29세 user[o]의 name과 age 멤버값 max의 name, gender,age 멤버값
11.4 구조체 포인터 생략, 만 소개
11.6.1 구조체 배열을 이용한 직원의 평균 급여 구하기 구조체 배열(프로그램 11-6)과 일반 배열(프로그램 11-7)을 이용했을 때의 차이점을 통해 구조체의 장점을 잘 알 수 있다. • 직원 5명의 이름, 아이디, 급여 정보를 입력받아 급여의 평균을 구한 후 급여가 평균 이상인 직원의아이디와급여 정보를 출력하시오.
이 프로그램은 꼭 보관할 것 11.6.3 메뉴를 이용한 실험 데이터 관리 프로그램 • 실험 기간 동안 얻은 실험 데이터 관리 및 정보 획득을 위해 실험 데이터 입력, 출력, 검색, 정렬 작업을 반복해서 수행하는 프로그램을 작성하시오.
11.6.3 메뉴를 이용한 실험 데이터 관리 프로그램 • 메뉴 선택 - 프로그램에서 가능한 기능을 사용자에게 메뉴로 제시하고 사용자가 그만두기를 원할 때까지 반복해서 작업을 하도록 한다. - 이때 일단 메뉴를 보여주고 특정 기능을 반복해서 수행하거나 종료하는 것은 do~while문을 이용해 처리