윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
매매춘과 청소년 賣春과 賣春과 買春의 買春의 차이점 賣春 ; 賣春 ; 성을 판매하는 사람에게 촛점 성을 판매하는 사람에게 촛점 賣買春 ; 賣買春 ; 성을 구매, 판매하는 사람 도 문제. 성을 구매, 판매하는 사람 도 문제.
기술거래사 등록 온라인 접수 화면 ( 신청 접수기간 5/29월 14:00 ~ 6/19금 11:00 )
심폐 소생술, 죽어가는 사람을 살리는 4분의 기적.
아름다운 이들의 행복한 길음안나의 집.
Chapter 02. C언어 기반의 C++ 박 종 혁 교수 UCS Lab SeoulTech Tel:
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
Vision System Lab, Sang-Hun Han
Exel 2013 *텍스트와 기호,한자 삽입하기 클립아트=온라인그림 (장식) 데이터 탭-정렬 및 필터 그룹-정렬,필터
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
미국경제의 신용위기가 한국경제에 미치는 영향
2장 닷넷 프레임워크.
Internet Computing KUT Youn-Hee Han
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Internet Computing KUT Youn-Hee Han
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
10장 메모리 관리.
25장. 메모리 관리와 동적 할당.
3장. 포인터, 배열, 구조체 포인터, 배열, 구조체 학습목표 기본적 데이터 타입
Chapter 4 매개변수와 오버로딩 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Visual C++ Programming Common Controls
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
C ++ 프로그래밍 시작.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
3 장 Visual Basic 2010 기본 문법 3.1 변수 3.2 데이터 형식 3.3 연산자 3.4 제어문
프로그래밍2 및 실습 C언어 기반의 C++ 2.
스택(Stack) 김진수
' Strategic Alliance Partner with '
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
계산제어.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
Python.
국제의료관광 관련 법, 제도.
Chapter 12. String 클래스의 디자인
Chapter 4 변수 및 바인딩.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
목차 성능과 최적화. 메모리할당. STL 알고리즘. 책의 성능 단원과 다른 단원들을 함께 포괄적으로 발표를 진행 하겠습니다.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
Chapter 08 조건문.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
제 8 장 포인터.
노동조합 활동 사례 희망연대노동조합.
Chapter 03. 소켓 주소 구조체 다루기.
2011년 12월 16 일 대강절 셋재주 주일낮예배.
C++ 언어의 특징
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
배열, 포인터, 함수 Review & 과제 1, 2.
Chapter 1 인간행동의 이해와 사회복지실천
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2

Chapter 02-1. Chapter 02의 시작에 앞서 윤성우의 열혈 C++ 프로그래밍 Chapter 02-1. Chapter 02의 시작에 앞서 윤성우 저 열혈강의 C++ 프로그래밍 개정판

C언어의 복습을 유도하는 확인학습 문제1 윤성우의 열혈 C++ 프로그래밍 문제 1의 답안

C언어의 복습을 유도하는 확인학습 문제2 윤성우의 열혈 C++ 프로그래밍 문제 2의 답안

C언어의 복습을 유도하는 확인학습 문제3 윤성우의 열혈 C++ 프로그래밍 문제 3의 답안

윤성우의 열혈 C++ 프로그래밍 Chapter 02-2. 새로운 자료형 bool 윤성우 저 열혈강의 C++ 프로그래밍 개정판

‘참’을 의미하는 true와 ‘거짓’을 의미하는 false 윤성우의 열혈 C++ 프로그래밍 true는 ‘참’을 의미하는 1바이트 데이터이고, false는 ‘거짓’을 의미하는 1바이트 데이터이다. 이 둘은 각각 정수 1과 0이 아니다. 그러나 정수가 와야 할 위치에 오게 되면 , 각각 1과 0으로 변환이 된다. 실행결과

자료형 bool 윤성우의 열혈 C++ 프로그래밍 bool의 이해 true와 false는 bool형 데이터이다. 실행결과

윤성우의 열혈 C++ 프로그래밍 Chapter 02-3. 참조자의 이해 윤성우 저 열혈강의 C++ 프로그래밍 개정판

참조자(Reference)의 이해 윤성우의 열혈 C++ 프로그래밍 변수의 선언으로 인해서 num1이라는 이름으로 메모리 공간이 할당된다. 참조자의 선언으로 인해서 num1의 메모리 공간에 num2라는 이름이 추가로 붙게 된다. 참조자는 기존에 선언된 변수에 붙이는 ‘별칭’이다. 그리고 이렇게 참조자가 만들어지면 이는 변수의 이름과 사실상 차이가 없다.

참조자 관련 예제와 참조자의 선언 윤성우의 열혈 C++ 프로그래밍 실행결과 num2는 num1의 참조자이다. 따라서 이후부터는 num1으로 하는 모든 연산은 num2로 하는것과 동일한 결과를 보인다. 실행결과 참조자의 수에는 제한이 없으며, 참조자를 대상으로 참조자를 선언하는 것도 가능하다.

참조자의 선언 가능 범위 윤성우의 열혈 C++ 프로그래밍 실행결과 불가능한 참조자의 선언의 예 상수 대상으로의 참조자 선언은 불가능하다. 정리하면, 참조자는 선언과 동시에 누군가를 참조해야 하는데, 그 참조의 대상은 기본적으로 변수가 되어야 한다. 그리고 참조자는 참조의 대상을 변경할 수 없다. 참조자는 생성과 동시에 누군가를 참조해야 한다. 포인터처럼 NULL로 초기화하는 것도 불가능하다. 변수의 성향을 지니는 대상이라면 참조자의 선언이 가능하다. 배열의 요소 역시 변수의 성향을 지니기 때문에 참조자의 선언이 가능하다. 실행결과

포인터 변수 대상의 참조자 선언 윤성우의 열혈 C++ 프로그래밍 실행결과 ptr과 dptr 역시 변수이다. 다만 주소 값을 저장하는 포인터 변수일 뿐이다. 따라서 이렇듯 참조자의 선언이 가능하다. 실행결과

윤성우의 열혈 C++ 프로그래밍 Chapter 02-4. 참조자와 함수 윤성우 저 열혈강의 C++ 프로그래밍 개정판

Call-by-value & Call-by-reference 윤성우의 열혈 C++ 프로그래밍 값을 전달하면서 호출하게 되는 함수이므로 이 함수는 Call-by-value이다. 이 경우 함수 외에 선언된 변수에는 접근이 불가능하다. 값은 값이되, 주소 값을 전달하면서 호출하게 되는 함수이므로 이 함수는 Call-by-reference이다. 이 경우 인자로 전달된 주소의 메모리 공간에 접근이 가능하다! C언어 학습 시 공부한 내용에 대한 복습이다.

Call-by-address? Call-by-reference! 윤성우의 열혈 C++ 프로그래밍 포인터 ptr에 전달된 주소 값의 관점에서 보면 이는 Call-by-value이다. 주소 값을 전달 받아서 외부에 있는 메모리 공간에 접근을 했으니 이는 Call-by-reference이다. C++에는 두 가지 형태의 Call-by-reference가 존재한다. 하나는 주소 값을 이용하는 형태이며, 다른 하나는 참조자를 이용하는 형태이다.

참조자를 이용한 Call-by-reference 윤성우의 열혈 C++ 프로그래밍 매개변수는 함수가 호출될 때 선언이 되는 변수이므로, 함수호출의 과정에서 선언과 동시에 전달되는 대상으로 초기화된다. 즉, 매개변수에 선언된 참조자는 여전히 선언과 동시에 초기화된다. 참조자 기반의 Call-by-reference!

const 참조자 윤성우의 열혈 C++ 프로그래밍 함수의 호출 형태 함수의 정의 형태 함수의 정의형태와 함수의 호출형태를 보아도 값의 변경유무를 알 수 없다! 이를 알려면 HappyFunc 함수의 몸체 부분을 확인해야 한다. 그리고 이는 큰 단점이다! 함수 HappyFunc 내에서 참조자 ref를 이용한 값의 변경은 허용하지 않겠다! 라는 의미! 함수 내에서 참조자를 통한 값의 변경을 진행하지 않을 경우 참조자를 const로 선언해서, 다음 두 가지 장점을 얻도록 하자! 1. 함수의 원형 선언만 봐도 값의 변경이 일어나지 않음을 판단할 수 있다. 2. 실수로 인한 값의 변경이 일어나지 않는다.

반환형이 참조이고 반환도 참조로 받는 경우 윤성우의 열혈 C++ 프로그래밍 반환의 과정에서 일어나는 일은 다음의 경우와 같다.

반환형은 참조이되 반환은 변수로 받는 경우 윤성우의 열혈 C++ 프로그래밍 반환의 과정에서 일어나는 일은 다음의 경우와 같다.

참조를 대상으로 값을 반환하는 경우 윤성우의 열혈 C++ 프로그래밍 참조자를 반환하건, 변수에 저장된 값을 반환하건, 반환형이 참조형이 아니라면 차이는 없다! 어차피 참조자가 참조하는 값이나 변수에 저장된 값이 반환되므로! 반환형이 참조형인 경우에는 반환되는 대상을 참조자로 그리고 변수로 받을 수 있다. 그러나 반환형이 값의 형태라면, 참조자로 그 값을 받을 수 없다!

잘못된 참조의 반환 윤성우의 열혈 C++ 프로그래밍 이와 같이 지역변수를 참조의 형태로 반환하는 것은 문제의 소지가 된다. 따라서 이러한 형태로는 함수를 정의하면 안 된다. 에러의 원인! ref가 참조하는 대상이 소멸된다!

const 참조자의 또 다른 특징 윤성우의 열혈 C++ 프로그래밍 에러의 원인! 이를 허용한다는 것은 ref를 통한 값의 변경을 허용한다는 뜻이 되고, 이는 num을 const로 선언하는 이유를 잃게 만드는 결과이므로! 해결책! 따라서 한번 const 선언이 들어가기 시작하면 관련해서 몇몇 변수들이 const로 선언되어야 하는데, 이는 프로그램의 안전성을 높이는 결과로 이어지기 때문에, const 선언을 빈번히 하는 것은 좋은 습관이라 할 수 있다.

어떻게 참조자가 상수를 참조하냐고요! 윤성우의 열혈 C++ 프로그래밍 const 참조자는 상수를 참조할 수 있다. 이유는, 이러한 것이 가능하도록 한 이유! 이렇듯 매개변수 형이 참조자인 경우에 상수를 전달할 수 있도록 하기 위함이 바로 이유이다!

Chapter 02-5. malloc & free를 대신하는 new & delete 윤성우의 열혈 C++ 프로그래밍 Chapter 02-5. malloc & free를 대신하는 new & delete 윤성우 저 열혈강의 C++ 프로그래밍 개정판

new & delete 윤성우의 열혈 C++ 프로그래밍 malloc을 대한하는 메모리의 동적 할당방법! 크기를 바이트 단위로 계산하는 일을 거치지 않아도 된다! free를 대신하는 메모리의 해제방법! new 연산자로 할당된 메모리 공간은 반드시 delete 함수호출을 통해서 소멸해야 한다! 특히 이후에 공부하는 객체의 생성 및 소멸 과정에서 호출하게 되는 new & delete 연산자의 연산자의 연산특성은 malloc & free와 큰 차이가 있다!

포인터를 사용하지 않고 힙에 접근하기 윤성우의 열혈 C++ 프로그래밍 변수의 성향을 지니는(값의 변경이 가능한) 대상에 대해서는 참조자의 선언이 가능하다. C언어의 경우 힙 영역으로의 접근을 위해서는 반드시 포인터를 사용해야만 했다. 하지만 C++에서는 참조자를 이용한 접근도 가능하다!

Chapter 02-6. C++에서 C언어의 표준함수 호출하기 윤성우의 열혈 C++ 프로그래밍 Chapter 02-6. C++에서 C언어의 표준함수 호출하기 윤성우 저 열혈강의 C++ 프로그래밍 개정판

C++의 표준헤더: c를 더하고 .h를 빼라. 윤성우의 열혈 C++ 프로그래밍 이렇듯, 표준 C에 대응하는 표준 C++ 함수는 C++ 문법을 기반으로 변경 및 확장되었다. 따라서 가급적이면 C++의 헤더파일을 포함하여, C++의 표준함수를 호출해야 한다. 표준 C의 abs 함수 대응하는 C++의 표준 abs 함수

Chapter 02가 끝났습니다. 질문 있으신지요?