Chapter 11 구조체.

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
제2장 C 언어의 확장 C++(1).
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
제14장 동적 메모리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
2007 1학기 16 구조체.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
C언어: 구조체 (Structures).
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
컴퓨터 개론 및 실습 11. 동적 메모리 할당.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
구조체.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 02. 자바 기본 문법.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
제 6 장 함수(functions).
구조체 (Structure).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 09. 포인터 1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 4 장 Record.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
7 생성자 함수.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Chapter 11 구조체

01. 구조체의 개요 구조체 : C 언어에서 사용 가능한 자료형들을 모아서 하나의 자료형으로 정의 배열 : 동일한 형태의 데이터를 여러 개 모아서 하나의 자료 구조로 표현 구조체 : 서로 다른 형태의 데이터를 여러 개 모아서 하나의 자료 구조로 표현 구조체의 선언과 구조체(형) 변수 선언

01. 구조체의 개요

02. 구조체의 사용 – 2.1 구조체 선언 및 구조체 변수의 선언 구조체의 선언 구조체를 선언할 때는 예약어 struct를 사용 구조체 이름은 구조체의 형태를 식별하기 위한 것으로 식별자의 규칙에 따라 지정 구조체 각각의 구성 요소는 형과 식별자로 선언 선언을 하고 나서 마지막에는 반드시 ;(쌍반점)을 붙인다 C 언어는 구조체 선언을 하나의 문장으로 취급

02. 구조체의 사용 – 2.1 구조체 선언 및 구조체 변수의 선언 구조체의 선언의 예 구조체를 선언한 뒤, 선언된 형으로 다음과 같이 구조체 변수를 선언하고 사용 구조체 변수 : struct 예약어와 구조체의 이름을 같이 사용하여 선언

02. 구조체의 사용 – 2.1 구조체 선언 및 구조체 변수의 선언 구조체의 선언의 예(구조체 선언과 변수 선언을 동시에)

02. 구조체의 사용 – 2.1 구조체 선언 및 구조체 변수의 선언 구조체의 선언의 예(구조체 이름을 생략하고 구조체의 구성 요소와 구조체 변수만 선언)

02. 구조체의 사용 – 2.2 typedef를 사용한 구조체 선언 C 언어는 프로그램의 가독성과 이식성을 높이기 위해 typedef라는 기능을 제공 typedef는 모든 자료형을 사용자가 지정하는 자료형으로 다시 정의하는 기능을 제공 typedef을 잘 이용하면 프로그램의 가독성과 이식성을 향상 시킬 수 있다

02. 구조체의 사용 – 2.2 typedef를 사용한 구조체 선언 구조체 자료형을 하나의 이름으로 지정함으로써 구조체 자료형의 변수를 간단하게 선언할 수 있다

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 구조체를 선언한 뒤에는 초기화 과정을 거쳐야 한다 일괄 초기화 : 구조체 전체 요소를 한번에 초기화 하는 방법 멤버단위 초기화 : 구조체의 각 멤서(요소) 단위로 초기화 하는 방법

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 – 2.3.1 일괄 초기화 구조체의 일괄 초기화

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 – 2.3.1 일괄 초기화 구조체의 일괄 초기화(구조체 선언과 구조체 변수 선언, 구조체의 일괄 초기화를 하나의 문장으로 처리)

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 – 2.3.2 멤버 단위로 초기화 구조체에 대해 멤버(요소) 단위로 초기화를 수행 가능 구조체의 멤버에 접근하기 위해 .(마침표) 연산자를 사용 구조체의 멤버가 문자 배열인 경우 배열 이름은 주소를 가리키는 상수이므로 직접 문자열로 치환될 수 없으며, strcpy() 함수를 사용하여 문자열을 복사

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 – 2.3.2 멤버 단위로 초기화 예제 11-1

02. 구조체의 사용 – 2.3 구조체의 초기화와 사용 – 2.3.2 멤버 단위로 초기화 예제 11-2

02. 구조체의 사용 – 2.4 구조체의 크기 sizeof 연산자로 구조체의 크기를 알 수 있다 C 언어는 구조체를 정의할 때 구성 요소를 비트 단위로 설정하는 방법을 제공 멤버의 크기를 비트 단위로 지정함으로써 메모리를 절약 비트 단위로 지정하려면 멤버 이름 다음에 :(쌍점)과 비트 수를 지정 위와 같이 구조체를 정의하면 하나의 구조체 크기는 35바이트(정확하게는 34바이트 6비트) 정도가 되지만 크기를 출력해보면 40바이트가 출력 그 이유는 메모리의 관리가 비트 단위가 아니라 바이트 단위 또는 워드(16비트, 32비트, 64비트) 단위로 이뤄 지기 때문 비트 단위로 구조체를 지정하는 것은 int형과 unsigned형만 가능 비트 단위로 구조체를 지정하면 메모리를 절약할 수 있는 반면에 프로그램의 이식성이 떨어지고 비트 단위 계 산에 시간이 더 소요된다는 단점이 있다.

02. 구조체의 사용 – 2.4 구조체의 크기 예제 11-3

03. 구조체의 응용 – 3.1 함수와 구조체 구조체를 이용한 응용 함수와 구조체 구조체가 함수의 인수로 사용될 때의 구조체 포인터, 구조체 배열, 구조체 리스트 등등 함수와 구조체 함수의 인수로 구조체를 전달 가능 함수의 인수로 구조체를 사용하려면 구조체를 전역 변수 선언 영역에 선언해 함수의 인수로 구조체가 전달되면 구조체의 모든 멤버가 복사되어 함수로 전달 즉 구조체는 하나의 형으로 취급되기 때문에 주소에 의한 호출이 아니라 값에 의한 호출로 처리

03. 구조체의 응용 – 3.1 함수와 구조체 예제 11-4

03. 구조체의 응용 – 3.1 함수와 구조체 예제 11-5

03. 구조체의 응용 – 3.2 구조체 포인터 함수의 매개변수로 구조체 주소를 이용한 구조체 포인터를 사용 가능 구조체의 주소만 넘겨주면 되므로 멤버의 복사에 시간이 걸리지 않는다 주소만 전달. 호출된 함수에서 구조체의 값이 바뀌면 호출한 함수의 구조체 값도 바뀐다(주소에 의한 호출) 일반 구조체와 구조체 포인터를 사용할 때 멤버에 접근하는 연산자에 차이 일반 구조체의 멤버 접근 연산자는 .(마침표) 연산자 사용 구조체 포인터를 사용한 멤버의 접근에는 ->(화살표) 연산자 사용

03. 구조체의 응용 – 3.2 구조체 포인터 예제 11-6

03. 구조체의 응용 – 3.3 구조체 배열 구조체도 하나의 형이기 때문에 배열로 선언하여 사용 가능 예제 11-7

03. 구조체의 응용 – 3.3 구조체 배열 예제 11-7 계속

03. 구조체의 응용 – 3.3 구조체 배열 예제 11-7 계속

03. 구조체의 응용 – 3.3 구조체 배열 예제 11-8

03. 구조체의 응용 – 3.3 구조체 배열 예제 11-8 계속

03. 구조체의 응용 – 3.4 구조체와 리스트 구조체의 한 멤버로 같은 구조체의 포인터를 정의 하나의 구조체가 동일 구조의 다른 구조체를 가리키는 형태 위 과정을 반복하여 리스트를 구성

03. 구조체의 응용 – 3.4 구조체와 리스트 구조체 리스트 구조체의 멤버로 동일한 형태의 구조체 포인터를 선언하고 그 포인터에 다음 구조체의 주소를 배정하여 구성

03. 구조체의 응용 – 3.4 구조체와 리스트 예제 11-9

03. 구조체의 응용 – 3.4 구조체와 리스트 예제 11-9 계속

03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 8장에서 날짜와 시간 관련 라이브러리 함수를 제공하는 <time.h> 함수 소개 날짜 및 시간 관련 라이브러리 함수는 응용 프로그램을 개발할 때 자주 사용 현재 시간을 반환하는 localtime() 함수는 현재 시간을 <time.h>에 정의된 tm 구조체로 반환하고, strftime() 함수는 tm 구조체에 저장된 정보를 특정 형식의 문자열로 변환하여 반환

03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 <time.h>에 정의된 tm 구조체

03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수

03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 예제 11-10

03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 03. 구조체의 응용 – 3.5 구조체와 날짜 및 시간 관련 라이브러리 함수 예제 11-11

04. 공용체 구조체 : 서로 다른 형의 데이터를 모아서 하나의 자료 구조로 사용 공용체 : 하나의 데이터에 대해 서로 다른 형태의 데이터로 사용 공용체의 선언과 사용법은 구조체와 동일하지만 예약어 union을 사용 위의 예를 살펴보면 2개의 멤버를 가진 공용체가 하나의 값을 유지 2개의 멤버 이름으로 접근이 가능하지만, 두 멤버는 같은 기억 장소를 공유하여 항상 같은 값 유지

04. 공용체 예제 11-12

05. 열거형 열거형enumerated type : 순서가 있는 데이터들을 열거하여 하나의 형으로 정의 열거형은 정숫값을 가지며, 선언하는 방법은 구조체와 같다. 열거형을 선언할 때는 예약어 enum을 사용

05. 열거형 열거형은 정수형으로서 심벌릭 매크로와 유사한 기능 일반적으로 적은 수의 열거에는 심벌릭 매크로를 사용 의미 있는 열거에는 열거형을 사용 요일과 같이 의미 있는 순서를 가진 데이터에는 열거형을, 최댓값과 최솟값 같은 적은 수의 열거에는 심벌릭 매크로를 사용하는 것이 좋다

05. 열거형 예제 11-13