제 11 장 구조체.

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
11 주차 : Structures and Unions. 2 Introduction structure 는 다른 타입들의 변수를 모은 타입이며 그 타입들을 structure 의 멤버 라 한다. union 은 다른 타입의 여러 변수들을 하나 의 기억 장소에 보관함으로써 한.
요일과 월 Sun. Sunday 일요일 Mon. Monday 월요일 Tue. Tuesday 화요일
공업입문 중화학 공업의 종류에는 어떤것이 있는가.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
제 3 장 변수와 자료형.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
[별첨2] 참고자료 에너지관리공단 홍보교육실.
제 1장 C 언어의 소개.
2017년 1월 교육 일정표 인재혁신센터 ※ 교육일정 및 담당자는 상황에 따라 변동될 수 있습니다.
2016년 10월 교육 일정표 인재혁신센터 ※ 교육일정 및 담당자는 상황에 따라 변동될 수 있습니다.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
C# 03장. 프로그램 구성 요소와 데이터형.
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
8. 객체와 클래스 (기본).
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
변수와 자료형.
명품 Java Programming.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
변수와 자료형.
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
제 2 장 변수와 상수.
Chapter 11 Strings.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
2003년도 학생용 달력 이 서식 파일을 인쇄해서 벽걸이 달력으로 사용할 수 있고 사용자의 프레젠테이션에 필요한 부분만 복사해서 사용할 수도 있습니다. 새 디자인 서식 파일을 적용하면 달력의 모양을 바꿀 수 있습니다.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
지구가 행복해지는 녹색생활 · 愛너지 절약습관 녹색은 생활이다!.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
4장 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 22. 구조체와 사용자 정의 자료형1.
C 프로그래밍 기초.
2 배열과 구조.
샤를의 법칙 과학 1 학년 1 학기 5.분자의 운동 >풍선도 추우면 움추러드나(4/4) ) 단원명
C 코드최적화 세명대학교 AI연구실 양승조.
녹색생활 ㆍ愛너지 절약습관 지구가 행복해지는 녹색은 생활이다!.
자료구조 (Data Structure).
교수와 함께하는 독서토론세미나 운영 안내용 PPT 중앙도서관 학술정보지원팀.
강의 프레젠테이션 현대 사회와 미디어 12강. 미디어 문화.
자바 5.0 프로그래밍.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
Structures Summary.
2015 DESK CALENDER CHECK YOUR SCHEDULE FOR 365 DAYS.
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
printf("Global Korea\n");
삶을 풍요롭게 만드는 의사소통.
분리 수거 배출 오물이나 물에 젖지 않도록 비닐, 플라스틱, 알루미늄, 철사 등 이물질이 섞이지 않도록 종이.
Presentation transcript:

제 11 장 구조체

구조체는 서로 다른 데이터들을 하나로 묶는 중요한 도구입니다. 이번 장에서 학습할 내용 구조체는 서로 다른 데이터들을 하나로 묶는 중요한 도구입니다. 구조체의 개념, 정의, 초기화 방법 구조체와 포인터와의 관계 공용체와 typedef

자료형의 분류 기본자료형: char, int, float, double 등 자료형 파생자료형: 배열, 열거형, 구조체, 공용체

구조체의 필요성 학생에 대한 데이터를 하나로 모으려면? int number; char name[10]; double grade; 와 같이 개별 변수로 나타낼 수 있지만 묶을 수가 있나?

구조체를 사용하면 변수들을 하나로 묶을 수 있습니다. 구조체의 필요성 int number; char name[10]; double grade; 구조체를 사용하면 변수들을 하나로 묶을 수 있습니다.

구조체와 배열 구조체 vs 배열 같은 타입의 집합 다른 타입의 집합

중간 점검 구조체와 배열의 차이점을 이야기해보라. 복소수, 날짜, 화면의 좌표, 사각형 등을 표현하는데 필요한 데이터를 나열해보라. 구조체는 서로 타입이 다른 변수들을 묶는 것이다. 배열은 타입이 같은 변수들을 묶는 것이다.

구조체 선언 구조체 선언 형식 struct 태그 { 자료형 멤버1; 자료형 멤버2; ... };

구조체 선언 구조체 선언은 변수 선언은 아님

구조체 선언의 예

구조체 변수 선언 구조체 정의와 구조체 변수 선언은 다르다.

구조체의 초기화 중괄호를 이용하여 초기값을 나열한다.

.기호는 구조체에서 멤버를 참조할 때 사용하는 연산자입니다. 구조체 멤버 참조 구조체 멤버를 참조하려면 다음과 같이 .연산자를 사용한다. .기호는 구조체에서 멤버를 참조할 때 사용하는 연산자입니다. .

예제 #1 구조체 선언 구조체 변수 선언 구조체 멤버 참조 학번: 20070001 이름: 홍길동 학점: 4.300000

예제 #2 구조체 선언 구조체 변수 선언 구조체 멤버의 주소 전달 학번을 입력하시오: 20070001 이름을 입력하시오: 홍길동 학점을 입력하시오(실수): 4.3 학번: 20070001 이름: 홍길동 학점: 4.300000 구조체 선언 구조체 변수 선언 구조체 멤버의 주소 전달

예제 #3 점의 좌표를 입력하시오(x y): 10 10 점의 좌표를 입력하시오(x y): 20 20 두 점사이의 거리는 14.142136입니다. p2 (x,y) p1 (x,y)

중간 점검 구조체 안에 선언된 각각의 변수들을 ______이라고 한다. 멤버 구조체의 선언에 사용하는 키워드는 _______이다. 구조체의 태그는 왜 필요하며, 태그를 사용하는 경우과 사용하지 않은 경우가 어떻게 다른가? 구조체의 선언만으로 변수가 만들어지는가? 구조체의 멤버를 참조하는 연산자는 무엇인가? 멤버 struct 구조체 태그를 사용하면 태그를 이용하여서 구조체 변수를 필요할 때마다 정의할 수 있다. 구조체의 정의 만으로는 변수가 만들어지지 않는다. . 연산자

구조체를 멤버로 가지는 구조체

예제

예제 왼쪽 상단의 좌표를 입력하시오: 1 1 오른쪽 상단의 좌표를 입력하시오: 6 6 면적은 25이고 둘레는 20입니다.

구조체 변수의 대입과 비교 같은 구조체 변수까리 대입은 가능하지만 비교는 불가능하다.

중간 점검 구조체의 변수끼리 허용되는 연산에는 어떤 것들이 있는가? 구조체 태그와 구조체 변수의 차이점은 무엇인가? 구조체 멤버로 구조체를 넣을 수 있는가? 구조체는 배열을 멤버로 가질 수 있는가? = 연산자 구조체 태그는 구조체의 정의를 나타낸다. 따라서 구조체 태그에는 메모리 공간이 할당되지 않는다. 반면에 구조체 변수에는 실제로 메모리 공간이 할당된다. 가능하다. 가능하다.

구조체 배열 구조체를 여러 개 모은 것

구조체 배열 구조체 배열의 선언

구조체 배열의 초기화 구조체 배열의 초기화

구조체 배열 예제 학번을 입력하시오: 20070001 이름을 입력하시오: 홍길동 학점을 입력하시오(실수): 4.3 학번을 입력하시오: 20070002 이름을 입력하시오: 김유신 학점을 입력하시오(실수): 3.92 학번을 입력하시오: 20070003 이름을 입력하시오: 이성계 학점을 입력하시오(실수): 2.87 학번: 20070001, 이름: 홍길동, 학점: 4.300000 학번: 20070002, 이름: 김유신, 학점: 3.920000 학번: 20070003, 이름: 이성계, 학점: 2.870000

중간 점검 상품 5개의 정보를 저장할 수 있는 구조체의 배열을 정의해보라. 상품은 번호와 이름, 가격을 멤버로 가진다.

구조체와 포인터 구조체를 가리키는 포인터 포인터를 멤버로 가지는 구조체 순서로 살펴봅시다.

구조체를 가리키는 포인터 구조체를 가리키는 포인터

-> 연산자 -> 연산자는 구조체 포인터로 구조체 멤버를 참조할 때 사용

-> 연산자 ==

예제 학번=20070001 이름=홍길동 학점=4.300000

포인터를 멤버로 가지는 구조체

포인터를 멤버로 가지는 구조체 학번: 20070001 이름: Kim 학점: 4.300000 생년월일: 1980년 3월 20일

구조체와 함수 구조체를 함수의 인수로 전달하는 경우 구조체의 복사본이 함수로 전달되게 된다. 만약 구조체의 크기가 크면 그만큼 시간과 메모리가 소요된다.

구조체와 함수 구조체의 포인터를 함수의 인수로 전달하는 경우 시간과 공간을 절약할 수 있다. 원본 훼손의 가능성이 있다. 포인터를 통한 구조체의 변경을 막는다.

구조체를 반환하는 경우 복사본이 반환된다. 구조체 s의 복사본이 반환된다.

예제

예제 벡터의 합은 (7.000000, 9.000000)입니다.

중간 점검 구조체를 함수의 인수로 전달하면 원본이 전달되는가, 아니면 복사본이 전달되는가? 구조체를 포인터로 함수에 전달하는 경우, 원본 구조체를 훼손하지 않으려면 어떻게 하면 되는가? 구조체는 복사본이 전달된다. 매개 변수 선언시에 const를 붙인다.

공용체 공용체(union) 같은 메모리 영역을 여러 개의 변수가 공유 공용체를 선언하고 사용하는 방법은 구조체와 아주 비슷

예제 공용체 선언 공용체 변수 선언. char 형으로 참조. int 형으로 참조. v.c:A v.i:65 v.c:ꠕ v.i:10000

ip 주소 예제 7f000001

중간 점검 공용체의 선언에 사용하는 키워드는 _______이다. 공용체에 할당되는 메모리의 크기는 어떻게 결정되는가? union 가장 큰 멤버의 크기와 같다.

열거형 열거형(enumeration)이란 변수가 가질 수 있는 값들을 미리 열거해놓은 자료형 (예) 요일을 저장하고 있는 변수는 { 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일 } 중의 하나의 값만 가질 수 있다.

열거형의 선언 태그 이름 값들을 나열 열거형 변수 선언

열거형 초기화 값을 지정하기 않으면 0부터 할당

열거형의 예

열거형과 다른 방법과의 비교 정수 사용 기호 상수 열거형 switch(code) { case 1: printf("LCD TV\n"); break; case 2: printf("PDP TV\n"); } #define LCD 1 #define PDP 2 case LCD: case PDP: enum tvtype { LCD, PDP }; enum tvtype code; 컴퓨터는 알기 쉬우나 사람은 기억하기 어렵다. 기호 상수를 작성할 때 오류를 저지를 수 있다. 컴파일러가 중복이 일어나지 않도록 체크한다.

예제 0번째 요일의 이름은 monday입니다 1번째 요일의 이름은 tuesday입니다 2번째 요일의 이름은 wednesday입니다 3번째 요일의 이름은 thursday입니다 4번째 요일의 이름은 friday입니다 5번째 요일의 이름은 saturday입니다 6번째 요일의 이름은 sunday입니다

예제 TV 종류 코드를 입력하시오: 3 프로젝션 TV를 선택하셨습니다.

중간 점검 열거형의 선언에 사용하는 키워드는 _______이다. 열거형은 어떤 경우에 사용되는가? 열거형에서 특별히 값을 지정하지 않으면 자동으로 정수상수값이 할당되는가? enum 어떤 변수가 정해진 값만을 갖는 경우에 선언한다. 0부터 시작되는 정수로 할당된다.

typedef의 개념

typedef typedef은 새로운 자료형(type)을 정의(define) C의 기본 자료형을 확장시키는 역할 typedef old_type new_type;

typedef의 예

구조체로 새로운 타입 정의 구조체로 새로운 타입을 정의할 수 있다. struct point { int x; int y; }; typedef struct point POINT; POINT a, b;

예제

예제 새로운 점의 좌표는 (12, 13)입니다.

typedef과 #define 비교 이식성을 높여준다. 코드를 컴퓨터 하드웨어에 독립적으로 만들 수 있다 (예) int형은 2바이트이기도 하고 4바이트, int형 대신에 typedef을 이용한 INT32나 INT16을 사용하게 되면 확실하게 2바이트인지 4바이트인지를 지정할 수 있다. #define을 이용해도 typedef과 비슷한 효과를 낼 수 있다. 즉 다음과 같이 INT32를 정의할 수 있다. #define UINT32 unsigned int typedef float VECTOR[2];// #define으로는 불가능하다. 문서화의 역할도 한다. typedef을 사용하게 되면 주석을 붙이는 것과 같은 효과

중간 점검 typedef의 용도는 무엇인가? typedef의 장점은 무엇인가? 사원을 나타내는 구조체를 정의하고 이것을 typedef을 사용하여서 employee라는 새로운 타입으로 정의하여 보자. 사용자가 새로운 타입을 선언할 수 있게 한다. 이식성을 높이고 문서화의 역할도 하며 컴파일러가 점검할 수 있도록 한다.

Q & A