ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스

Slides:



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

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
제2장 C 언어의 확장 C++(1).
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
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++).
2007 1학기 16 구조체.
5장. 참조 타입.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
제 3장. C보다 나은 C++ II.
C 프로그래밍.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
Java 6장. 클래스 : 속성 public class SumTest {
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C#.
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.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
구조체.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
12. 상속 : 고급.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
제 6 장 함수(functions).
구조체 (Structure).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
Pointers summary.
7 생성자 함수.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열 동의대 김 미 진

학습목표 7장. 구조체 struct를 사용해 새로운 자료형을 정의한다. 구조체를 다양하게 사용한다. 매개변수가 구조체인 함수를 정의한다. 구조체 포인터를 이용해 구조체를 간접 참조한다. 구조체로 배열을 선언하고 사용한다.

구조체 구조체 선언 Section 01 구조체 사용하기 예약어 struct를 사용해 새로운 자료형을 정의할 수 있는데 struct로 정의된 자료형을 구조체라고 한다. 구조체 선언 struct 구조체명{ 자료형 멤버변수; : };

구조체 변수 선언 Section 01 구조체 사용하기 struct 구조체명 구조체변수명1, 구조체변수명2, ....구조체변수명n;

Section 01 구조체 사용하기

[실습하기 7-1] 구조체 정의하고 사용하기 [예제 7-1]7_1.cpp 01 #include<iostream> 02  using namespace std; 03  struct namecard{ 04     char name[20]; 05     char job[30]; 06     char tel[20]; 07     char email[40]; 08  }; 09  void main() 10  { 11     struct namecard  man;  12  13     cout<<" 이름을 입력하세요=>"; 14     cin>>man.name; 15     cout<<" 직업을 입력하세요=>"; 16     cin>>man.job 17     cout<<" 연락처를 입력하세요=>"; 18     cin>>man.tel; 19     cout<<" 이메일을 입력하세요=>"; 20     cin>>man.email; 21  22     cout<<"\n 입력받은 데이터를 출력합니다. "; 23     cout<<"\n 이름  \t 직업 \t 연락처   \t 이메일 "; 24     cout<<"\n ===================================================="; 25     cout<<"\n "<<man.name<<"\t "<< man.job << "\t "<< man.tel <<"\t "<< man.email; 26     cout<<"\n ===================================================="; 27     cout<<"\n sizeof(namecard) => "<<sizeof(namecard); 28    cout<<"\n 구조체 변수의 메모리 사이즈 =>"<<sizeof(namecard)<<"\n"; 29  } [예제 7-1]7_1.cpp

Section 01 구조체 사용하기 구조체 변수 초기화

[실습하기 7-2] 구조체 정의하고 사용하기 01 #include<iostream> [예제 7-2]7_2.cpp 02  using namespace std; 03  struct namecard{ 04     char name[20]; 05     char job[30]; 06     char tel[20]; 07     char email[40]; 08  }; 09  void main() 10  { 11   namecard x={ "김주현", "MCSE전문강사", "418-9876","ju.@pride.com"}, 12            y={ "박혜경", "웹마스터",     "551-6986","hk.@pride.com"}, 13            z={ "김동식", "기획A팀대리",  "318-3961","ds.@pride.com"}; 14  15   cout<<"\n 이름   직업            연락처           이메일 "; 16   cout<<"\n ====================================================="; 17   cout<<"\n "<<x.name <<"\t"<< x.job <<"\t"<< x.tel <<"\t"<< x.email; 18   cout<<"\n "<<y.name <<"\t"<< y.job <<"\t"<< y.tel <<"\t"<< y.email; 19   cout<<"\n "<<z.name <<"\t"<< z.job <<"\t"<< z.tel <<"\t"<< z.email; 20   cout<<"\n =====================================================\n"; 21  } [예제 7-2]7_2.cpp

Section 01 구조체 사용하기 구조체 단위로 값을 대입하기

[실습하기 7-3] 구조체 단위로 값 복사하기 01 #include<iostream> [예제 7-3]7_3.cpp 02  using namespace std; 03  struct namecard{ 04     char name[20]; 05     char job[30]; 06     char tel[20]; 07     char email[40]; 08  }; 09  void main() 10  { 11    namecard x={ "김주현", "MCSE전문강사", "418-9876","ju.@pride.com"}; 12    namecard y; 13   14    y = x; 15  16    cout<<"\n\t\t   이름 \t 직업 \t\t 연락처 \t 이메일 "; 17    cout<<"\n\t\t  ====================================="; 18    cout<<"\n<구조체 변수 x>"; 19    cout<<"\t"<<x.name <<"\t"<< x.job <<"\t"<< x.tel <<"\t"<< x.email; 20    cout<<"\n<구조체 변수 y>"; 21    cout<<"\t"<<y.name<<"\t"<<y.job<<"\t"<<y.tel<<"\t"<< y.email<<"\n"; 22  } [예제 7-3]7_3.cpp

Section 02 함수 매개변수로서의 구조체 함수 매개변수로서의 구조체

[실습하기 7-4] 구조체를 매개변수로 하는 값에 의한 전달 방식의 함수 01  #include<iostream> 02  using namespace std; 03  struct namecard{ 04     char name[20]; 05     char job[30]; 06     char tel[20]; 07     char email[40]; 08  }; 09  void structPrn(namecard temp);  // 함수의 선언 10  void main() 11  { 12   namecard x={"김주현", "MCSE전문강사", "418-9876",  "ju.@pride.com"}, 13            y={"박혜경", "웹마스터",      "551-6986",  "hk.@pride.com"}, 14            z={"김동식", "기획A팀대리",  "318-3961",  "ds.@pride.com"}; 15  16   cout<<"\n 이름   직업            연락처           이메일 "; 17   cout<<"\n====================================================="; 18   structPrn(x);  // 함수의 호출 19   structPrn(y); 20   structPrn(z); 21   cout<<"\n ==============================================\n"; 22  } 23  24  void structPrn(namecard temp)     // 함수의 정의 25  { 26    cout<<"\n"<<temp.name<<"\t"<<temp.job<<"\t" 27           <<temp.tel<<"\t"<<temp.email; 28 } [예제 7-4]7_4.cpp

Section 02 함수 매개변수로서의 구조체 구조체를 반환값으로 갖는 함수

구조체를 반환값으로 갖는 함수 (구조체 단위 입력함수 작성하기) Section 02 함수 매개변수로서의 구조체 구조체를 반환값으로 갖는 함수 (구조체 단위 입력함수 작성하기)

[실습하기 7-5] 구조체 단위 입력함수 작성하기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04    char name[20]; 05    char job[30]; 06    char tel[20]; 07    char email[40]; 08 }; 09  10 void structPrn(namecard temp);  11 namecard structInput( ); 12  13 void main() 14 { 15  namecard  x, y, z; 16  17  x=structInput( ); 18  y=structInput( ); 19  z=structInput( ); 20  21  cout<<"\n 이름   직업            연락처           이메일 "; 22  cout<<"\n==========================================="; 23  structPrn(x);  24  structPrn(y); 25  structPrn(z); 26  cout<<"\n========================================\n"; 27 } 28 [예제 7-5]7_5.cpp

[실습하기 7-5] 구조체 단위 입력함수 작성하기 29 void structPrn(namecard temp)     // 함수의 정의 30 { 31   cout<<"\n"<<temp.name<<"\t"<<temp.job <<"\t"<<temp.tel<<"\t"<<temp.email; 32 } 33  34 namecard structInput( ) 35 { 36   namecard temp; 37   cout<<"\n이름을 입력하세요=>"; 38   cin>>temp.name; 39   cout<<"직업을 입력하세요=>"; 40   cin>>temp.job; 41   cout<<"연락처를 입력하세요=>"; 42   cin>>temp.tel; 43   cout<<"이메일을 입력하세요=>"; 44   cin>>temp.email; 45  46   return temp; 47 } [예제 7-5]7_5.cpp

Section 03 구조체 포인터와 레퍼런스 구조체 변수와 포인터의 관계 (1/2) 자료형 * 포인터 변수;

Section 03 구조체 포인터와 레퍼런스 구조체 변수와 포인터의 관계 (2/2)

Section 03 구조체 포인터와 레퍼런스 구조체 포인터로 멤버 접근하기(1/2) 잘못된 표현 잘된 표현

구조체 포인터로 멤버 접근하기(2/2) Section 03 구조체 포인터와 레퍼런스 구조체 변수가 주어졌을 때 멤버변수에 접근하기 위해서는 닷(.) 연산자를 사용하고 구조체포인터에 대해서는 애로우(->) 연산자를 사용한다.

[실습하기 7-6] 구조체 변수와 포인터의 관계 알아보기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04        char name[20]; 05        char job[30]; 06        char tel[20]; 07        char email[40]; 08 }; 09  10 void structPrn(namecard temp);  11 namecard structInput( ); 12  13 void main() 14 { 15    namecard   x={"전원지","디자이너","345-0876","pr@pride.com"}, 16               y={"전수빈","의사    ","356-0868","subin@pride.com"}; 17    namecard  *p; 18    p=&x; 19    cout<<"\n 이름   직업            연락처           이메일 "; 20    cout<<"\ n======================================================="; 21    cout<<"\n"<<(*p).name<<"\t"<<(*p).job<<"\t" 22          <<(*p).tel<<"\t"<<(*p).email; 23    p=&y; 24    cout<<"\n"<<p->name<<"\t"<<p->job<<"\t"<<p->tel<<"\t"<<p->email; 25    cout<<"\n========================================================"; 26   27    cout<<"\n\n sizeof(x) => "<<sizeof(x); 28    cout<<"\n sizeof(p) => "<<sizeof(p)<<"\n"; 29 } [예제 7-6]7_6.cpp

[실습하기 3-1] if 문을 사용해 절대값 구하기

[실습하기 7-7] 구조체 변수와 포인터의 관계 알아보기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04    char name[20]; 05    char job[30]; 06    char tel[20]; 07    char email[40]; 08 }; 09  10 void structPrn(namecard temp);  11 void structInput(namecard *pTemp); 12  13 void main() 14 { 15    namecard  x, y, z; 16  17    structInput(&x);   // 함수의 호출 18    structInput(&y); 19    structInput(&z); 20  21    cout<<"\n 이름   직업    연락처               이메일 "; 22    cout<<"\n========================================================"; 23    structPrn(x);  24    structPrn(y); 25    structPrn(z); 26    cout<<"\n=======================================================\n"; 27 } 28  [예제 7-7]7_7.cpp

[실습하기 7-7] 구조체 변수와 포인터의 관계 알아보기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04    char name[20]; 05    char job[30]; 06    char tel[20]; 07    char email[40]; 08 }; 09  10 void structPrn(namecard temp);  11 void structInput(namecard *pTemp); 12  13 void main() 14 { 15    namecard  x, y, z; 16  17    structInput(&x);   // 함수의 호출 18    structInput(&y); 19    structInput(&z); 20  21    cout<<"\n 이름   직업    연락처               이메일 "; 22    cout<<"\n========================================================"; 23    structPrn(x);  24    structPrn(y); 25    structPrn(z); 26    cout<<"\n=======================================================\n"; 27 } 28  29 void structPrn(namecard temp)     // 함수의 정의 30 { 31    cout<<"\n"<<temp.name<<"\t"<<temp.job<<"\t"<<temp.tel<<"\t"<<temp.email; 32 } 33  34 void structInput(namecard *pTemp) 35 { 36    cout<<"\n이름을 입력하세요=>"; 37    cin>>pTemp->name; 38    cout<<"직업을 입력하세요=>"; 39    cin>>pTemp->job; 40    cout<<"연락처를 입력하세요=>"; 41    cin>>pTemp->tel; 42    cout<<"이메일을 입력하세요=>"; 43    cin>>pTemp->email; 44  } [예제 7-7]7_7.cpp

Section 03 구조체 포인터와 레퍼런스 구조체 포인터로 멤버 접근하기(3/4)

[실습하기 7-8] 구조체 레퍼런스를 매개변수로 갖는 함수 작성하기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04    char name[20]; 05    char job[30]; 06    char tel[20]; 07    char email[40]; 08 }; 09  10 void structPrn(namecard temp);  11 void structInput(namecard &temp); 12  13 void main() 14 { 15  namecard  x, y, z; 16  17   structInput(x);   // 함수의 호출 18   structInput(y); 19   structInput(z); 20  21  cout<<"\n 이름   직업    연락처               이메일 "; 22  cout<<"\n==========================================================="; 23  structPrn(x);  24  structPrn(y); 25  structPrn(z); 26  cout<<"\n=======================================================\n"; 27 } 28  29 void structPrn(namecard temp)     // 함수의 정의 30 { 31   cout<<"\n"<<temp.name<<"\t"<<temp.job<<"\t"<<temp.tel<<"\t"<<temp.email; 32 } 33  34 void structInput(namecard &temp) 35 { 36   cout<<"\n이름을 입력하세요=>"; 37   cin>>temp.name; 38   cout<<"직업을 입력하세요=>"; 39   cin>>temp.job; 40   cout<<"연락처를 입력하세요=>"; 41   cin>>temp.tel; 42   cout<<"이메일을 입력하세요=>"; 43   cin>>temp.email; 44 } [예제 7-8]7_8.cpp

Section 04 구조체 배열 구조체 배열

[실습하기 7-9] 구조체 배열 사용하기 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04    char name[20]; 05    char job[30]; 06    char tel[20]; 07    char email[40]; 08 }; 09 void main() 10 { 11  namecard x[3]={{"김주현", "MCSE전문강사", "418-9876", "ju.@pride.com"}, 12                 {"박혜경", "웹마스터",    "551-6986", "hk.@pride.com"}, 13                 {"김동식", "기획A팀대리", "318-3961", "ds.@pride.com"} 14                }; 15    cout<<"\n 이름   직업            연락처           이메일 "; 16    cout<<"\n========================================================"; 17    for(int i = 0 ; i < 3; i++) 18      cout<<"\n"<<x[i].name<<"\t"<<x[i].job<<"\t" 19             <<x[i].tel<<"\t"<<x[i].email; 20    cout<<"\n========================================================\n"; 21 } [예제 7-9]7_9.cpp

[실습하기 7-9] 구조체 배열 사용하기

예약어 struct를 사용해 새로운 자료형을 정의할 수 있는데 struct로 정의된 자료형을 구조체라고 한다. 구조체의 멤버를 참조하기 위한 연산자로 닷 연산자(.)와 애로우 연산자(->)가 제공된다. 함수의 매개변수를 구조체로 선언하여 구조체 단위로 값을 전달할 수 있다. 함수의 반환값으로 구조체 변수를 사용하면 함수의 자료형이 구조체가 된다. 특정 함수 내에서 다른 함수에 선언된 구조체 변수를 제어하기 위해서는 구조체 포인터를 형식 매개변수로 하는 주소 호출방식으로 함수를 정의하거나 레퍼런스 변수로 형식 매개변수를 정의한다.  동일한 구조체 형으로 선언된 기억 공간을 같은 목적으로 사용할 때는 구조체 배열을 사용하면 유용하다.