설계란 무엇인가?

Similar documents
설계란 무엇인가?

설계란 무엇인가?

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

11장 포인터

쉽게 풀어쓴 C 프로그래밍

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

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

PowerPoint 프레젠테이션

설계란 무엇인가?

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Data Structure

Microsoft PowerPoint - chap-11.pptx

슬라이드 1

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en

untitled

PowerPoint Template

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - C++ 5 .pptx

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - chap06-5 [호환 모드]

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

PowerPoint Presentation

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

02장.배열과 클래스

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

슬라이드 1

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

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint 프레젠테이션

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - C_9장 포인터 pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - Chapter_08.pptx

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

설계란 무엇인가?

PowerPoint Presentation

Microsoft PowerPoint - 04_C_Language_Function

C++ Programming

쉽게 풀어쓴 C 프로그래밍

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

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

C프로-3장c03逞풚

KNK_C_05_Pointers_Arrays_structures_summary_v02

Slide 1

Microsoft PowerPoint - 05장(함수) [호환 모드]

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

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

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

C++ Programming

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

8장. 포인터

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 세션.ppt

2002년 2학기 자료구조

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

설계란 무엇인가?

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

C++ Programming

Frama-C/JESSIS 사용법 소개

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

Chapter 4. LISTS

Visual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)

슬라이드 1

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

JVM 메모리구조

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

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - chap06-1Array.ppt

C 언어 프로그래밊 과제 풀이

6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre

C++ Programming

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

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

Microsoft PowerPoint - Chapter8.pptx

Infinity(∞) Strategy

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

PowerPoint Presentation

Microsoft PowerPoint - Chapter 1-rev

C++ Programming

Transcription:

금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하

6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15

6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값, 주소값 참조에의한전달 : 참조변수 변수주소값의매개변수전달 void Power(int *pnum) *pnum = *pnum * *pnum; 2 /15 int Num = 3; Power(&Num); cout << Num << endl; Num 3 * pnum pnum을통해 Num 접근가능

6 강. 함수와배열, 포인터, 참조함수와포인터 주소값의반환 p 주소값반환도가능 단, 해당타입의포인터로 받음 * 값반환 * pary int *GetArray(int Count) int *p = new int[count]; return p; int *pary; pary = GetArray(5); for (int i = 0; i < 5; i++) pary[i] = i + 1; cout << pary[i] << endl; 3 /15 1 2 3 4 5 delete [] pary; 사용하고난후메모리해제

6 강. 함수와배열, 포인터, 참조함수와포인터 두변수의값을서로교환하는함수를다음과같이 만들었더니제대로동작하지않았다. 두변수의값 이교환되도록프로그램을수정하라. void swap(int x, int y) int temp = x; x = y; y = temp; a b 변수값전달의문제점 3 43 x 4 34 y 4 /15 int a = 3, b = 4; cout << "a = " << a << ", b = " << b << endl; swap(a, b); cout << "a = " << a << ", b = " << b << endl;

6 강. 함수와배열, 포인터, 참조함수와포인터 프로그램확인 void swap(int *x, int *y) int temp = *x; *x = *y; *y = temp; a b 해결방법 : 주소값전달 34 * x 43 * y 5 /15 int a = 3, b = 4; cout << "a = " << a << ", b = " << b << endl; swap(&a, &b); cout << "a = " << a << ", b = " << b << endl;

6 강. 함수와배열, 포인터, 참조함수와배열 배열의매개변수전달방법 첫번째원소의주소값전달 참고사항 int Ary[5]; Ary의타입 : int * &Ary의타입 : int (*)[5] 원소의개수를함께전달 int Sum(int *pary, int Count) int S = 0; for (int i = 0; i < Count; i++) S += pary[i]; return S; Ary 1 * pary 포인터를배열처럼사용 6 /15 2 3 4 5 int Ary[5] = 1, 2, 3, 4, 5 ; cout << Sum(Ary, 5) << endl;

6 강. 함수와배열, 포인터, 참조함수와배열 int 형 1 차원배열을매개변수로전달받아원소들의 값을역순으로재정렬하는함수 Reverse 를작성하라. 중간까지반대편원소와교환 1 2 3 4 5 int Ary[5] = 1, 2, 3, 4, 5 ; Reverse(Ary, 5); for (int i = 0; i < 5; i++) 2. 교환 cout << Ary[i] << " "; cout << endl; 1. 교환 7 /15

6 강. 함수와배열, 포인터, 참조함수와배열 프로그램확인 void Reverse(int *pary, int Count) for (int i = 0; i < Count / 2; i++) int temp = pary[i]; pary[i] = pary[count - i - 1]; pary[count - i - 1] = temp; 중간까지반대편원소와교환 1 2 3 4 5 2. 교환 1. 교환 8 /15

6 강. 함수와배열, 포인터, 참조함수와참조 참조에의한매개변수전달 변수그자체를매개변수로전달받을수있음 void square(int &Num) Num = Num * Num; a와 Num은동일한변수 Num == a 3 int a = 3; square(a); cout << a << endl; 9 /15

6 강. 함수와배열, 포인터, 참조함수와참조 10 /15 참조의반환 변수그자체를반환할수있음 사라질변수 ( 지역변수와같은 ) 그자체를반환하지않도록 주의 int &GetNumber(int &Num) Num = Num + Num; return Num; int a = 3; GetNumber(a) = 100; cout << a << endl; 매개변수전달 Num == GetNumber(a) == a 참조반환 63 Num == a 100 6

6 강. 함수와배열, 포인터, 참조함수와참조 두변수의값을서로교환하는함수인 swap 함수를 포인터가아닌참조를사용하여구현해보라. void swap(int x, int y) int temp = x; x = y; y = temp; int a = 3, b = 4; cout << "a = " << a << ", b = " << b << endl; swap(a, b); cout << "a = " << a << ", b = " << b << endl; 11 /15

6 강. 함수와배열, 포인터, 참조함수와참조 프로그램확인 void swap(int &x, int &y) int temp = x; x = y; y = temp; x == y == a b 43 43 12 /15 int a = 3, b = 4; cout << "a = " << a << ", b = " << b << endl; swap(a, b); cout << "a = " << a << ", b = " << b << endl;

6 강. 함수와배열, 포인터, 참조프로그래밍연습 int 형배열과원소의개수를매개변수로전달받아 원소들전체를더한결과와곱한결과를한꺼번에 반환하고자한다. 그러나함수의반환값으로는단 한개만반환이가능하다. 매개변수를사용하여이 를해결해보라. 1. 포인터를사용해보라. 2. 참조를사용해보라. int Ary[5] = 1, 2, 3, 4, 5 ; int Sum, Multi; Sum = SumMulti(Ary, 5, Multi); //? cout << "Sum : " << Sum << endl; cout << "Multi : " << Multi << endl; 13 /15

6 강. 함수와배열, 포인터, 참조프로그래밍연습 포인터를사용한경우 int SumMulti(int *Ary, int Count, int *Mul) int Sum = 0; *Mul = 1; for (int i = 0; i < Count; i++) Sum += Ary[i]; *Mul *= Ary[i]; return Sum; int Ary[5] = 1, 2, 3, 4, 5 ; int Sum, Multi; Sum = SumMulti(Ary, 5, &Multi); cout << "Sum : " << Sum << endl; cout << "Multi : " << Multi << endl; 14 /15

6 강. 함수와배열, 포인터, 참조프로그래밍연습 참조를사용한경우 int SumMulti(int *Ary, int Count, int &Mul) int Sum = 0; Mul = 1; Mul 과 Multi 는동일 for (int i = 0; i < Count; i++) Sum += Ary[i]; Mul *= Ary[i]; return Sum; int Ary[5] = 1, 2, 3, 4, 5 ; int Sum, Multi; Sum = SumMulti(Ary, 5, Multi); cout << "Sum : " << Sum << endl; cout << "Multi : " << Multi << endl; 15 /15