기초컴퓨터프로그래밍

Similar documents
14 주차구조체와공용체

Microsoft PowerPoint - chap09-1.ppt

구조체정의 자료형 (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

untitled

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

PowerPoint 프레젠테이션

11장 포인터

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

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

Microsoft PowerPoint - Lesson12.pptx

Microsoft PowerPoint - chap-13.pptx

02장.배열과 클래스

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

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - Chapter_09.pptx

11장 포인터

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제13장 구조체

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

Hanyang Volunteer Corps volunteer image

10장. 구조체

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

Microsoft PowerPoint - chap06-2pointer.ppt

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

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

PowerPoint 프레젠테이션


untitled

<C7E0BAB9C0AFBCBA5F F30365F322E696E6464>

03장.스택.key

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

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

untitled

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

OCW_C언어 기초

chap8.PDF

06.._ _12...._....

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

F.

06³â_±â»ÝÀÇ»ù_10¿ùÈ£_À¥Áø

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

untitled


3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

슬라이드 1

K&R2 Reference Manual 번역본

본 강의에 들어가기 전

¼�¼úÇüÁßÇг»Áö2µµ

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

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

독립기념관 7월호 3p

1

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

PowerPoint Template

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

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

ABC 9장

11장 포인터

5월고용내지

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

시설공단-11월도큐

C 프로그래밊 개요

Microsoft PowerPoint - chap09.ppt


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

PowerPoint Presentation

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

Microsoft PowerPoint - Chapter_04.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - Chapter 6.ppt

歯9장.PDF

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


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

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx


Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint C-구조체

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

PowerPoint 프레젠테이션

PowerPoint Presentation

???? 1

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

Microsoft PowerPoint - 제11장 포인터

½Å³âÈ£-Ç¥Áö

OCW_C언어 기초

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

遺꾨떦?쒖?530.ps, page Normalize

Transcription:

구조체 #include <stdio.h> int main() { } printf("structure\n"); printf("instructor: Keon Myung Lee\n"); return 0;

내용 구조체 (struct) Typedef 공용체 (union) 열거형 (enum)

구조체 구조체 (structure) 어떤대상을표현하는서로연관된항목 ( 변수 ) 들을하나의새로운데이터형으로정의한것 사용자가정의하는데이터형 학생 이름학과나이평점 문자열문자열정수실수 struct Student { char dept[12]; int age; float grade; int, float 등의기본데이터형과마찬가지로구조체에대하여변수, 배열, 포인터등을선언하여사용가능

구조체정의 구조체정의형식 struct tag 명 { member 리스트 - struct : 예약어 - tag 명 : 정의하는구조체의이름 ( 데이터형의이름 ) - member 리스트 : 구조체에포함되는멤버의데이터형과변수명 - 세미콜른 (;) 으로끝남 struct DATE { struct phonebook { struct book { int year; char title[50]; int month; char phone[14]; char author[50]; int day; int quick; struct DATE publish; int price;

구조체정의 struct Student { char dept[12]; int age; float grade; 구조체변수선언 struct Student st; 멤버접근 - 구조체변수. 멤버이름 구조체변수 st.age = 21; strcpy(st.dept, "software"); name dept age grade st

구조체변수 구조체정의를하면서동시에변수를선언하는경우 struct Student { char dept[12]; int age; float grade; struct Student st; struct Student { char dept[12]; int age; float grade; } st;

#include <stdio.h> struct List { char *name; char gender; int age; int main() { struct List st1, st2; st1.name = "Moon"; st1.gender = 'M'; st1.age = 25; st2.name = "Park"; st2.gender = 'F'; st2.age = 28; printf(" 이름 성별 나이 \n"); printf("------------------------------------\n"); printf("%s %c %d\n", st1.name, st1.gender, st1.age); printf("%s %c %d\n", st2.name, st2.gender, st2.age); } return 0; 이름 성별 나이 ----------------------------------- Moon M 25 Park F 28

구조체변수의초기화 구조체변수의초기화 중괄호 ({ }) 안의초기값을콤마 (,) 로분리하여지정 초기값이주어지지않은멤버에는 0 에해당하는값부여 st struct Student { char dept[12]; int age; float grade; struct Student st = {"Daniel", "Science", 20, 4.3 name dept Daniel Science age 20 grade 4.3

구조체변수의대입 같은구조체변수간의대입가능 대입연산으로대응되는멤버간의복사 struct student { struct student s1 = {10, " 홍길동 ", 4.1 struct student s2; sid 10 s2 = s1; s1 name 홍길동 GPA 4.1 s2 sid 10 name 홍길동 GPA 4.1

구조체변수의대입 동일한멤버로구성된다른이름의구조체변수간의대입불가능 struct student { } st; struct pupil { } pp; st = pp; st.sid = pp.sid; (error) (ok)

#include <stdio.h> struct student{ double grade; int main() { struct student s1 = {10, " 임꺽정 ", 3.7}, s2 = {20, " 홍길동 ", 3.9}, s3 = {30, " 장길산 ", 4.1 struct student max; } max = s1; if (s2.grade > max.grade) max = s2; if (s3.grade > max.grade) max = s3; printf(" 학번 : %d\n", max.sid); printf(" 이름 : %s\n", max.name); printf(" 학점 : %.1lf\n", max.grade); return 0; 학번 : 30 이름 : 장길산학점 : 4.1

typedef typedef 데이터형의이름을재정의하고자할때사용 typedef int AGE; AGE myage; // int형을 AGE로다시정의 // int myage; 구조체에 typedef 정의가능 struct student { int kor; int mat; typedef struct student STUDENT; typedef 를이용하여구조체변수를선언하는방법 struct student hong; STUDENT hong;

구조체포인터변수 일반변수와유사하게정의 구조체포인터 struct student { struct student *p; struct student st; p = &st; p st sid name GPA 포인터를통한멤버지정 - 포인터변수 -> 멤버이름 p->gpa = 4.3;

#include <stdio.h> struct student { p st 1004 sid 좀해요 name 3.9 GPA int main() { struct student s = {1004, " 좀해요 ", 3.9 struct student *p; p = &s; printf(" 학번 :%d 이름 :%s 평점 :%.1f\n", s.sid, s.name, s.gpa); printf(" 학번 :%d 이름 :%s 평점 :%.1f\n", (*p).sid,(*p).name,(*p).gpa); printf(" 학번 :%d 이름 :%s 평점 :%.1f\n", p->sid, p->name, p->gpa); return 0; } 학번 :1004 이름 : 좀해요평점 :3.9 학번 :1004 이름 : 좀해요평점 :3.9 학번 :1004 이름 : 좀해요평점 :3.9

구조체배열 구조체배열선언 일반데이터형과동일한방법사용 struct student { int main() { struct student list[3]; // 구조체의배열선언 list[1].sid = 1001; // 구조체의배열멤버접근 strcpy(list[1].name, " 잘해요 "); list[1].gpa = 4.12; } return 0;

구조체배열의초기화 struct student { 구조체배열 struct student list[3] = { {1, " 잘해요 ", 4.21}, {2, " 노력해 ", 2.54}, {3, " 좀해요 ", 3.67}

중첩구조체 중첩구조체 (nested structure) 구조체가다른구조체형의멤버를갖는것 struct date { int year; int month; int day; struct student { char name[10]; struct date birthday; sid name GPA birthday year Month day s1 s1.sid = 1004; s1.birthday.year = 2004; struct student s1;

중첩구조체 구조체내부의멤버로구조체직접정의가능 struct date { int year; int month; int day; struct student { char name[10]; struct date birthday; struct student { char name[10]; struct date { int year; int month; int day; } birthday;

중첩구조체 중첩구조체의초기화 초기값을 { } 안에멤버의순서대로나열 struct date { int year; int month; int day; struct student { char name[10]; struct date birthday; struct student st = {10, " 홍길동 ", 3.56, 1986, 8, 5

중첩구조체 s1 멤버참조 struct date { int year; int month; int day; s2 sid name GPA birthday year Month day struct student { char name[10]; struct date birthday; struct student s1; struct student *s2; s1.sid s1.birthday.year s2 = &s1; s2->sid s2->birthday.year (*s2).sid (*s2).birthday.year

중첩구조체 자체참조구조체 정의되는구조체의포인터변수를멤버로갖는것 struct student { struct student *next; 연결리스트 (linked list) 구성에서활용 sid name GPA next sid name GPA next sid name GPA next

struct student { char name[10]; struct student *next; int main() { 2 임꺽정 3.6 NULL struct student s1 = {1, " 홍길동 ", 4.1, NULL struct student s2 = {2, " 임꺽정 ", 3.6, NULL struct student *head = NULL; struct student *current = NULL; head = &s1; s1.next = &s2; s2.next = NULL; current head s1 s2 1 홍길동 4.1 NULL &s2 } current = head; while (current!= NULL) { printf(" :%d :%s, 평점 :%.1f\n", current->sid, current->name, current->gpa); current = current->next; } :1 : 홍길동, 평점 :4.1 :2 : 임꺽정, 평점 :3.6

공용체 공용체 (union) 같은메모리영역을모든멤버가공유 기억공간의크기는멤버중에서크기가가장큰멤버로결정 선언및사용방법은구조체와동일 union share { char c; int i; c i union share ex;

공용체 다른멤버에의해서데이터훼손위험 #include <stdio.h> union student{ int num; double grade; num grade int main() { union student s1 = {20 } printf(" 학번 : %d\n", s1.num); s1.grade = 4.1; printf(" 학점 : %.1lf\n", s1.grade); printf(" 학번 : %d\n", s1.num); return 0; 학번 : 20 학점 : 4.1 학번 : -1717986918

열거형 열거형 (enumeration) 변수가가질수있는값들을미리열거해놓은자료형 - 요일을나타내는변수의값은 { 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일 } 중의하나 enum 열거형태그 { 열거형상수리스트 enum days {MON, TUE, WED, THU, FRI, SAT, SUN enum days d; d = MON; 첫번째값은정수값 0 에해당

열거형 #include <stdio.h> enum days {MON, TUE, WED, THU, FRI, SAT, SUN char *days[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" int main() { enum days d; } for(d = MON; d <= SUN; d++) { printf("%d %s 이 \n", d, days_name[d]); } 0 번째요일은 Monday 입니다 1 번째요일은 Tuesday 입니다 2 번째요일은 Wednesday 입니다 3 번째요일은 Thursday 입니다 4 번째요일은 friday 입니다 5 번째요일의이름은 saturday 입니다 6 번째요일의이름은 sunday 입니다

요점정리 구조체는어떤대상을표현하는서로연관된항목 ( 변수 ) 들을하나의새로운데이터형으로정의한것이다. 중첩구조체는다른구조체형의멤버를갖는것이다. typedef 는데이터형의이름을재정의하고자할때사용한다. 공용체 (union) 은모든멤버가동일한메모리공간을사용하게한다. 열거형 (enum) 은변수가가질수있는값들을미리열거해놓은자료형이다.