PowerPoint 프레젠테이션

Similar documents
기초컴퓨터프로그래밍

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

14 주차구조체와공용체

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - chap09-1.ppt

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Presentation

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

02장.배열과 클래스

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

PowerPoint 프레젠테이션


Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint Template

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - ch07 - 포인터 pm0415

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Presentation

untitled

10장. 구조체

Microsoft PowerPoint - chap11-포인터의활용.pptx

<C7E0BAB9C0AFBCBA5F F30365F322E696E6464>

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Lab 3. 실습문제 (Single linked list)_해답.hwp

untitled

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

11장 포인터

Microsoft PowerPoint - chap09.ppt

11장 포인터

ABC 9장

11장 포인터

Microsoft PowerPoint - chap06-5 [호환 모드]

설계란 무엇인가?

이번장에서학습할내용 구조체란무엇인가? 구조체의선언, 초기화, 사용 구조체의배열 구조체와포인터 구조체와함수 공용체 열거형 typedef 구조체는복잡한내용을일목요연하여정리하는데유용하게사용됩니다. 2

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - 07_(C_Programming)_(Korean)_Composite_Data_Types

슬라이드 1

여름호-내지원본

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Chapter 4. LISTS

슬라이드 1

독립기념관 7월호 3p

슬라이드 1

Microsoft PowerPoint - additional01.ppt [호환 모드]


Microsoft PowerPoint - Chapter_09.pptx

PowerPoint Template

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Microsoft PowerPoint - 7장 배열 pptx

슬라이드 1

Microsoft PowerPoint - Lesson12.pptx

½Å³âÈ£-³»ÁöÀμâ

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

½Å³âÈ£-Ç¥Áö

chap 5: Trees

5월고용내지

Slide 1

Microsoft PowerPoint - e pptx

Slide 1

º½È£-³»Áö

시설공단-11월도큐

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - chap-13.pptx

Data Structure

PowerPoint Presentation

OCW_C언어 기초

Microsoft PowerPoint - a10.ppt [호환 모드]

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Microsoft PowerPoint - C++ 5 .pptx

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

OCW_C언어 기초

C++ Programming

강의 개요

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - 제11장 포인터

K&R2 Reference Manual 번역본

Microsoft PowerPoint - additional06.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

C 프로그래밊 개요

Transcription:

오픈소스소프트웨어개발입문 (CP33992) 사용자정의자료형 부산대학교공과대학정보컴퓨터공학부

학습목표 여러자료형변수들의집합체인구조체와공용체의특징과차이점을이해할수있다. 구조체 구조체선언과사용방법을알수있다. 구조체배열을이용한프로그램을할수있다. 구조체포인터를이용한프로그램을할수있다. 구조체자체혹은구조체포인터를매개변수로전달할수있다. 구조체의멤버로서다른구조체를사용할수있다. 공용체 공용체선언과사용방법을알수있다. 공용체와구조체의차이점을알수있다. 2

구조체개요 3

구조체란무엇인가? 예 : 학생관리프로그램의각학생에대한기록 (record) 한학생에대한자료들을한곳에모아서관리하면편리 한학생의이름, 학번, 나이, 전화번호, 전공등 구조체는여러자료형변수들의집합체이다. 구조체구문구조 struct 구조체명 { 자료형1 멤버명1; 자료형2 멤버명2;... }; 멤버변수혹은필드변수 구조체를구성하는변수 4

구조체정의와변수선언 (1/2) 구조체정의와변수선언 #1 정의 struct student { int id; char name[20]; char major[20]; }; 구조체정의와변수선언 #2 형정의 (typedef) 사용하여구조체자료형이름정의 typedef struct { int id; char name[20]; char major[20]; } STUD; 선언 STUD s1, s2; 선언 struct student s1, s2; 5

구조체정의와변수선언 (2/2) 구조체정의와변수선언 #3 정의및선언 struct student { int id; char name[20]; char major[20]; 구조체정의와변수선언 #4 구조체이름을붙이지않고구조체와변수동시선언 struct { int id; char name[20]; char major[20]; } s1, s2; } s1, s2; 6

구조체변수를위한기억공간 구조체변수를위한기억공간 구조체의각멤버들을위한기억공간을연속적으로할당 struct student 형의변수를위한기억공간할당 예 : struct student 형의구조체변수를위한기억공간할당 [ 프로그램 12-1] 구조체변수의크기를출력 (struct.c) 학습 point: 구조체변수 stud 가할당받는기억공간의크기를이해할수있다 7

프로그램 12-1 8

구조체변수사용 구조체변수에포함된멤버변수에접근하기위해서점연산자를사용한다. 구문형식 구조체변수. 멤버명 예 [ 프로그램 12-2] 학생구조체사용예 (student.c) 학습 point: 점연산자를사용하여학생구조체의멤버인정수형변수 id 와문자형배열 name, major 에접근할수있음 9

프로그램 12-2 10

구조체대입 구조체변수간의대입이가능하며이경우모든멤버가한번에대입된다. 예 struct student stud1, stud2;... stud2 = stud1; 정수형멤버인 id 값만변경하는방법은? 11

구조체포인터 구조체에대한포인터를이용하여구조체참조 구조체포인터변수선언형식 struct 구조체명 * 포인터명 ; 예 struct student stud1, stud2, *p; p = &stud2; 12

구조체포인터사용 *p는 p가가리키는구조체 구조체포인터 p가가리키는구조체내의멤버 예 : (*p).id, (*p).name, (*p).major 주의! *p.id == *(p.id) 의의미 구조체포인터연산자 : -> 구조체포인터-> 멤버명 == (* 구조체포인터 ). 멤버명 예 : p->id, p->name 13

구조체배열과포인터 14

구조체배열 구조체배열의각원소는하나의구조체이다. 구문형식 struct 구조체명배열명 [ 원소의개수 ]; 예 struct student s[100]; 예를들어 stud 배열의 2 번째구조체의멤버사용 s[1].id s[1].name s[1].major 15

구조체배열초기화예 struct student stud[] = { }; 구조체배열초기화 {1401001, " 박찬호 ", " 정보과학 "}, {1401005, " 김연아 ", " 영문학 "}, {1401008, " 박세리 ", " 정보과학 "}, {1401015, " 홍길동 ", " 경영학 "} [ 프로그램 12-3] 학생정보를입력받고정보과학전공학생들만출력 (student1.c) 학습 point: 사용자입력을통해구조체를초기화하는방법을학습하고조건에맞는구 조체변수를찾아출력 16

프로그램 12-3 17

프로그램 12.3 의구조체배열 구조체포인터배열 실제입력되는학생수에관계없이배열크기 100 struct student *s[100]; 구조체의배열이아니라 구조체포인터의배열 필요할때 malloc() 함수로구조체기억공간할당 18

구조체를매개변수로전달 19

구조체를매개변수로전달 구조체자체혹은구조체포인터를매개변수로전달할수있다. (1) 구조체자체를매개변수로전달하는방법 함수를정의할때구조체를매개변수로선언하고 함수가호출될때실매개변수로구조체를전달 실매개변수구조체의모든값이형식매개변수에그대로복사 (2) 구조체포인터를매개변수로전달하는방법 구조체의포인터를실매개변수로건네주어 이포인터로구조체를참조하는방법 구조체전체를복사할필요가없으므로시간이적게듬 20

구조체매개변수예 구조체자체를매개변수로전달하는예 printstudent1(stud1); 구조체포인터를매개변수로전달하는예 printstudent2(&stud2); p = ( struct student *) malloc(sizeof(struct student *));... printstudent2(p); [ 프로그램 12-4] 함수를이용하여학생구조체의데이터를출력 (printstudent.c) 학습 point: student 구조체변수의값을입력받고함수호출을통해출력 21

프로그램 12-4 (1/2) 22

프로그램 12-4 (2/2) 23

구조체리턴 구조체자체를리턴 구조체에대한포인 터를리턴 24

중첩구조체 25

중첩구조체 (nested structure) 선언 구조체의멤버로서다른구조체를사용 복잡한구조의데이터를관리하기위함 예 struct date { char month; // 월 char day; // 일 }; struct student { int id; char name[20]; struct date birthday; } stud; 26

중첨구조체접근 중첩구조체에서내부구조체의멤버접근 외부 _ 구조체명. 내부 _ 구조체명. 멤버명 예 stud.birthday.month = 12; [ 프로그램 12-5] 학생들의생일정보를입력받고학생이름으로검색하는프로그램 (student3.c) 학습 point: 중첩구조체 student를선언하고값을접근할수있음 27

프로그램 12-5 28

다른구조체에대한포인터를포함한중첩구조체 다른구조체에대한포인터를구조체의멤버로사용 struct student { int id; char name[20]; struct date *ptr; } stud; 이포인터 ptr 를사용하기위해서 이포인터가실제 date 구조체를가리키고있어야한다. 예를들어, stud.ptr = (struct date *) malloc(sizeof(struct date)); stud.ptr->month = 12; 29

자기참조구조체 30

자기참조구조체개요 여러권의책에대한정보를어떻게저장할까? 구조체배열을이용 : 배열의크기를미리정해야함 보다유연한데이터표현방법이필요함 구조체내에자신을가리킬수있는포인터변수를선언 struct book { char title[50]; char author[20]; char publisher[20]; struct date pub_day; struct book *next; }; 31

struct book *ptr; 자기참조구조체사용 // 첫번째책을위한구조체생성 ptr = (struct book *) malloc(sizeof(struct book));... // 첫번째책자료대입 // 두번째책을위한구조체생성 ptr->next = (struct book *) malloc(sizeof(struct book)); ptr = ptr->next; // 두번째책구조체를포인터... // 두번째책자료대입 // 세번째책을위한구조체생성 ptr->next = (struct book *) malloc(sizeof(struct book)); ptr = ptr->next; // 세번째책구조체를포인터... // 세번째책자료대입 32

공용체 33

공용체 (union) 구조체와비슷하게여러개의멤버변수로구성된다 한순간에하나의멤버변수만사용할수있다. 공용체정의 union 공용체명 { 자료형1 멤버명1; 자료형2 멤버명2; : }; 공용체변수선언 union 공용체명변수명 ; 34

공용체예 가격을나타내는공용체 가격은원, 달러, 유로중하나로표시 union price { int won; // 원 float dollar; // 달러 float euro; // 유로 }; union price book_price; book_price.won = 10000; book_price won, dollar, euro 35

공용체의기억공간할당 멤버변수 won, dollar, euro 가모두한기억공간을공유 주의! 공용체내의다른멤버변수에새로이데이터를대입하면기존의데이터는지워짐 예 : dollar 값을대입하면 won 값은지워짐 book_price.won = 10000; book_price.dollar = 39.99; 36

공용체배열 / 포인터 공용체도배열이나포인터형태로도선언되어사용됨 예 공용체배열선언 union price book_prices[10]; 공용체포인터및변수선언 union price book_price, *price_ptr; 공용체주소를공용체포인터변수에대입 price_ptr = &book_price; 37

열거형 38

열거형 (enumerated type) 열거형 일련의관련정수, 상수들의집합을하나의자료형으로정의 열거형은자료형의일종이므로하나의자료형으로사용 특히변수값이특정집합으로제한된경우에좋음 열거형을사용하면코드가보다간결해지고읽기쉬워짐 열거형정의 enum 열거명 { 상수명 [= 정수값 ],..., 상수명 [= 정수값 ] }; 39

열거형예 열거형정의 enum day { SUN, MON, TUE, WED, THU, FRI, SAT }; 실제로는 enum day { SUN = 0, MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6 }; enum day 형의변수선언 enum day d1,d2; d1 = fri; [ 프로그램 12-6] 프로그램 11-7 에서선언된매크로상수 INT 와 DOUBLE 을열거 형을사용하여선언한프로그램 (eumprint.c) 학습 point: 열거형상수를선언하고사용할수있음 40

프로그램 12-6 41

열거형이용함수 다음요일을리턴하는함수 next_day() enum day next_day(enum day d) { return (enum day)((int)d+1); } 42

열거형에서초기화 열거형에서상수명의값을초기화가능함 열거형을정의하면서변수선언도함께할수도있음 enum suit { CLUB = 1, DIAMOND = 2, HEART = 3, SPADE = 4 } a, b, c; 43

프로그램실습 (1/2) 다음그림과같이개인정보등록, 모든정보출력, 특정인의정보출력, 특정인의정보제거기능을가진간단한전화번호관리프로그램을작성하시오. 44

프로그램실습 (2/2) 조건 전화번호부에는최대 50개의정보를저장할수있음 사용자가그만하기를선택할때까지여러기능을반복하여처리할수있음 구조체배열을사용하고구조체포인터를이용하여참조함 프로그램 Tip 개인정보를저장할구조체배열의크기와실제로정보가저장된배열원소수가다름. 즉배열전체의크기와상관없이실제배열에저장된개인정보의수를별도의변수 ( 예로 size) 에관리해야한다. 일단 #define MAX 50으로정의한매크로상수를이용하여 struct phone book[max}; 로 phone형구조체배열 book을선언한후 int size = 0; 으로선언함 개인정보가등록될때마다 size를 1 증가하고 3번기능에의해정보가제거될때마다 size를 1 감소하며 1번기능에서는 book[0] 부터 book[size-1] 까지의원소에저장된정보를출력함 배열의한원소를삭제할때는삭제할이름을포함하고있는배열원소의첨자를먼저구해야함. 만일삭제할개인정보의배열원소첨자가 5이고현재배열에저장된정보가 9(size) 개라면 book[5]=book[6], book[6]=book[7], book[7]=book[8] 과같이첨자 6부터 9-1(size-1) 까지의원소에대해한칸씩앞으로이동하고배열에저장된정보개수 size도 1을빼서 7로수정해야함 45