2007 1학기 16 구조체.

Slides:



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

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Chapter 12 배열. 2 배열  의미  배열은 연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조로 그 사용이 간편  배열은 동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조 일반 변수가 단독주택이라면 배열은 아파트  크기  배열의.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
1 16 유도 자료형 학기. Perfect C 2 구조체 (struct)  구조체의 필요성  책에 대한 정보를 살펴보면 매우 다양  struct  서로 다른 자료형의 변수들을 묶어서 만든 하나의 새로운 자료형을 구조체 (struct)  구조체는 연관된.
제2장 C 언어의 확장 C++(1).
구조체란 무엇인가 ? 예: 학생관리 프로그램의 각 학생에 대한 기록(record) 구조체는 여러 자료형 변수들의 집합체이다.
Part 12 구조체와 공용체 안산1대학 디지털정보통신과 임 성 국.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Chapter 14 포인터.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
5장 배열 작성자 : 변재현.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
제 3장. C보다 나은 C++ II.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
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#.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
구조체.
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
구조체 (Structure).
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
어서와 C언어는 처음이지 제21장.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

2007 1학기 16 구조체

구조체 Perfect C 구조체의 필요성 struct 구조체 정의 책에 대한 정보를 살펴보면 매우 다양 구조체는 연관된 멤버로 구성되는 통합 자료형으로 대표적인 유도자료형 구조체 정의 중괄호 사이에 원하는 여러 개의 변수를 선언 중괄호 다음 마지막에 세미콜론(;)을 반드시 기술 책 정보 제목, 저자, 출판사, 페이지수, 가격, ISBN 등 Perfect C

구조체 정의와 변수 선언 Perfect C 구조체 정의 변수 선언 구조체 멤버(구성요소, member) 구조체 정의 구문에서는 각 구성요소의 초기값을 대입할 수 없음 한 구조체 내부에서 선언되는 구조체 멤버의 이름은 모두 유일 구조체의 정의는 구조체 struct book을 새로운 자료형으로 정의하는 구문 구조체 정의는 구조체 변수를 선언하는 구문이 아님 변수 선언 구조체 정의 구문은 변수의 범위와 비슷 구조체 정의 구문의 위치에 따라 구조체 선언 시 자료형 이용의 범위가 정해짐 Perfect C

구조체 정의와 변수 선언 구조체 변수를 선언하는 다른 방법은 다음과 같이 구조체 정의와 변수 선언을 함께하는 방법 위 구문에서 변수 yourbook과 mybook은 모두 같은 구조체 struct book 자료형 위 구조체 정의 구문에서 구조체 태그 이름 book을 생략해도 구조체 변수 선언이 가능 Perfect C

자료형이 다른 구조체 Perfect C 다음 구문에서 구조체 변수 mybook과 yourbook은 자료형이 다른 변수 즉 동일한 구조체 태그 이름으로 선언된 변수만이 동일한 자료형의 구조체가 됨 자료형이 다르면 대입연산자를 사용 불가능 Perfect C

typedef를 이용한 형 선언 typedef를 이용한 형 선언 typedef로 구조체 정의 Perfect C struct book { char title[50]; //제목 char author[50]; //저자 char publish[50]; //출판사 int pages; //페이지수 int price; //가격 };   typedef struct book book ; … book yourbook; book mybook; typedef를 이용한 형 선언 구조체 struct book이 정의된 상태에서 구조체 struct book 좀 더 간단하게 선언 typedef로 구조체 정의 구조체 정의 자체를 typedef와 함께하는 방법 아래 typedef 구문에서 새로운 자료형으로 정의되는 키워드는 software로서, 이 구문 이후에는 구조체를 선언할 때 software를 이용하여 형의 선언이 가능 Perfect C

초기 값 지정 구조체 struct book 정의 구조체 변수 mybook에 초기 값을 대입 멤버 참조 Perfect C 구조체 정의에서는 구조체 멤버에 초기 값을 지정 불가능 구조체 변수 mybook에 초기 값을 대입 구조체 변수도 배열과 같이 중괄호를 이용하여 초기 값을 대입 가능 멤버 참조 구조체 멤버를 접근하기 위해서는 멤버 접근 연산자인 마침표(.)를 이용 struct book { … int pages = 200; int price = 30000; }; typedef struct book book; 구조체 정의에서 멤버의 초기 값을 저장하는 것은 허용되지 않는다. book mybook = {"C@PL.com", "강 환수", "학술정보", 530, 20000}; 구조체변수.구조체멤버 mybook.author Perfect C

예제 소스 structbook.c 구조체 정의, 변수 선언, 구조체 이용 프로그램 Perfect C

복소수 구조체 복소수를 표현하는 구조체 complex를 정의 Perfect C 복소수는 a+bi로 표현되며, 실수부 a와 허수부 b는 실수 값 구조체 struct complex는 다음과 같이 정의 struct complex { double real; //실수 double img; //허수 }; typedef struct complex complex; Perfect C

구조체 주의 Perfect C 메인 함수 상단 전역 부분에서 struct complex를 정의 메인 함수 내부에서 다시 같은 이름으로 struct complex를 정의하면서 변수 comp를 하나 선언 comp = comp3;와 같은 대입문은 에러 두 변수 comp1과 comp2는 다시 complex 유형으로 선언 Perfect C

구조체 포인터 Perfect C 구조체 변수를 가리키는 주소 값을 저장하려면 구조체 포인터 변수를 이용 변수 ku는 구조체 변수이고, 변수 ptr은 구조체를 가리키는 포인터 struct univ { char title[50]; //이름 char address[50]; //주소 int students; //학생수 };   struct univ ku = {"한국대학교", "서울시 서초구", 5000}; struct univ *ptr = &ku; Perfect C

구조체 포인터 이용 연산자 -> 간접 연산자 * Perfect C 구조체 포인터 변수 ptr을 이용하여 구조체의 멤버를 참조하려면 연산자 ->를 이용 연산자 ->는 구조체 멤버 참조 연산자로서 연산자 우선순위가 가장 높음 간접 연산자 * 변수 ptr을 이용하여 구조체의 멤버 member를 참조하는 다른 방법은 (*ptr).member를 이용하는 방법 위 구문에서 (*ptr).title은 *ptr.title과는 다른 의미이므로 반드시 괄호를 사용 *ptr.title은 *(ptr.title)을 의미하므로 ptr이 포인터 변수이면 에러가 발생 구조체의 멤버를 참조하는 연산자 ->와 .의 연산자 우선순위가 가장 높기 때문 printf("학교 : %s, 주소 : %s, 학생수 : %d\n", ptr->title, ptr->address, ptr->students); printf("학교 : %s, 주소 : %s, 학생수 : %d\n", (*ptr).title, (*ptr).address, (*ptr).students); Perfect C

포인터 변수 구조체 변수 및 포인터 변수를 이용하는 다음 4가지 구문을 잘 구별하도록 Perfect C

구조체 배열 Perfect C 구조체 변수를 여러 개 선언하기 위해서 구조체 배열을 이용 구조체 book으로 배열 clang[3]을 선언하여 구조체 원소 3개를 선언하는 구문 다른 배열과 같이 구조체 배열도 첨자를 이용하여 각 원소를 참조하며, 첨자는 0부터 (배열크기-1)까지 가능 첫 구조체 원소의 멤버를 출력하는 구문 struct book { char author[50]; char title[50]; int pages; };   struct book clang[3] = { {"Deitel", "C How To Program", 600}, {"Al Kelly", "A Book On C", 700}, {"Stephen Prata", "C Primer Plus", 800} }; printf("저자 : %s, 제목 : %s, 페이지수 : %d\n", clang[0].author, clang[0].title, clang[0].pages); Perfect C

구조체 인자, 값 전달 Perfect C 복소수 연산에 이용되는 함수를 구현 구현 함수 paircomplex1()는 전달 인자 복소수의 켤레 복소수를 구하여 반환하는 함수 그러므로 변수 pcomp에는 {3.4, -4.8}이 저장 구현 위와 같이 구조체는 함수의 전달 인자와 반환 값으로 이용이 가능 위 함수는 구조체 인자를 값에 의한 호출(call by value) 방식으로 이용 즉 함수 paircomplex1() 내부에서 지역 구조체 변수 com을 하나 만들어 실인자의 구조체 값을 모두 복사하는 방식으로 구조체 값을 전달 complex comp = {3.4, 4.8}; complex pcomp; pcomp = paircomplex1(comp); complex paircomplex1(complex com) { com.img = -com.img; return com; } Perfect C

구조체 인자, 주소 전달 인자를 call by address로 Perfect C 다음 함수 paircomplex2()는 인자를 주소 값으로 저장하여, 실인자의 변수 comp의 값을 직접 수정하는 방식 위 함수를 호출하기 위해서는 comp의 주소 값을 이용해야 하므로 다음과 같이 호출 구조체가 많은 멤버를 가지거나, 큰 배열을 멤버로 가지는 경우, 구조체 자체를 인자로 전달하는 것은 매우 비효율 이러한 경우는 주소 값으로 전달하는 방식인 주소에 의한 호출 방식이 효율적 void paircomplex2(complex *com) { com->img = -com->img; } paircomplex2(&comp) Perfect C

Thank You ! 노력 없이 이룰 수 있는 것 아무것도 없다.