Chapter 02. C언어 기반의 C++ 박 종 혁 교수 UCS Lab SeoulTech Tel:

Slides:



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

Tel. 02)  동화 새롭게 바라보기 1 박명옥 ( 호곡중학교 )
중등특수교육과 엄승현 이영재 이지수 속요에 대하여.
모자보호시설 경주 애가원 학번 : 05V0081 이름 : 황 주영. 기관 소개 사회복지법인 자선단 산하 경주애가원은 1957 년 4 월 6 일 ‘ 경주모자원 ’ 이란 이름으로 한국전쟁 미망인의 생계유지 및 자립을 지원, 현재 조소득 모자세대의 기본적인 생계수준을 보장하고.
기술거래사 등록 온라인 접수 화면 ( 신청 접수기간 5/29월 14:00 ~ 6/19금 11:00 )
심폐 소생술, 죽어가는 사람을 살리는 4분의 기적.
근로기준법 (임금체불, 해고 및 주40시간제).
아름다운 이들의 행복한 길음안나의 집.
학교안전7대 표준안 편성 운영 광주수창초등학교 교사 김용현.
자연으로 ~ 에티켓통 (여성 생리대 위생 수거함)
쯔쯔가무시 예방수칙을 실천하세요! 한국산업안전보건공단 광주지역본부.
Vision System Lab, Sang-Hun Han
교재:C언어로 쉽게 풀어 쓴 자료구조 (생능출판사, 천인국저)
Exel 2013 *텍스트와 기호,한자 삽입하기 클립아트=온라인그림 (장식) 데이터 탭-정렬 및 필터 그룹-정렬,필터
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
중소,중견기업의 HR 로드맵 빌딩 인사관리 전문가 실무과정 Wisdom21
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
Internet Computing KUT Youn-Hee Han
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
1. 화면 및 메뉴소개 ▣ 온라인사업지원시스템 소개 ▶ 온라인사업지원시스템이란
2018-2학기 캡스톤디자인 실습지원비 사용설명회
25장. 메모리 관리와 동적 할당.
3장. 포인터, 배열, 구조체 포인터, 배열, 구조체 학습목표 기본적 데이터 타입
Chapter 4 매개변수와 오버로딩 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
C ++ 프로그래밍 시작.
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
프로그래밍2 및 실습 C언어 기반의 C++ 2.
안전한 생활 교과용도서의 이해 2015 개정 교육과정 초등학교 1~2학년군 (화)
해양생태계 이상현상 대응관리 남이현.
1. 화면 및 메뉴소개 ▣ 온라인사업지원시스템 소개 ▶ 온라인사업지원시스템이란
2017년 1학기 국가근로장학금 장학생 교육 1.
연구실 안전정보 시스템 사용자 매뉴얼 Safetylabs.incheon.ac.kr.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
주한미국대사관 농무참사관실 선임연구원 반용건
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
계산제어.
4장 - PHP의 표현식과 흐름 제어-.
Python.
국제의료관광 관련 법, 제도.
Chapter 12. String 클래스의 디자인
1 [100인의 멘토] 학교로 찾아가는 진로교육 □ 목적 인천지역 자유학기제 대상 청소년에게 건설관련 전문분야에 대한 진로탐색을 통해 체계적인 진로교육을 실시 □ 개요 ○ 참가대상: 18개 학교(학교당 1학급 기준) *협의가능 ○ 활동장소 : 각 선정 학교.
Chapter 4 변수 및 바인딩.
속요 국어국문학과 김보민 국어국문학과 조나현 제목 창의적으로 바꿔야 함.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
목차 성능과 최적화. 메모리할당. STL 알고리즘. 책의 성능 단원과 다른 단원들을 함께 포괄적으로 발표를 진행 하겠습니다.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
2019-1학기 캡스톤디자인 실습지원비 사용설명회
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
캡스톤디자인 1, 3 설명회 (졸업작품) 전자 및 통신 전공
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
시스템 인터페이스 Lab#6 C 쉘 프로그래밍 실습.
노동조합 활동 사례 희망연대노동조합.
Chapter 03. 소켓 주소 구조체 다루기.
2011년 12월 16 일 대강절 셋재주 주일낮예배.
C++ 언어의 특징
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
배열, 포인터, 함수 Review & 과제 1, 2.
2015년도 연세대학교 의과대학 의과학자육성 장학금 신청안내
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

Chapter 02. C언어 기반의 C++ 박 종 혁 교수 UCS Lab SeoulTech Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2013-2nd 프로그래밍입문(2)

C언어의 복습을 유도하는 확인학습 문제1

C언어의 복습을 유도하는 확인학습 문제1(답안) 문제 1의 답안

C언어의 복습을 유도하는 확인학습 문제2

C언어의 복습을 유도하는 확인학습 문제2(답안) 문제 2의 답안

C언어의 복습을 유도하는 확인학습 문제3

C언어의 복습을 유도하는 확인학습 문제3(답안) 문제 3의 답안

‘참’을 의미하는 true와 ‘거짓’을 의미하는 false 실행결과

자료형 bool bool의 이해 true와 false는 bool형 데이터이다. 실행결과

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

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

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

포인터 변수 대상의 참조자 선언 ptr과 dptr 역시 변수이다. 다만 주소 값을 저장하는 포인터 변수일 뿐이다. 따라서 이렇듯 참조자의 선언이 가능하다. 실행결과

Call-by-value & Call-by-reference

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

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

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

반환형이 참조이고 반환도 참조로 받는 경우 반환의 과정에서 일어나는 일은 다음의 경우와 같다.

반환형은 참조이되 반환은 변수로 받는 경우 반환의 과정에서 일어나는 일은 다음의 경우와 같다.

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

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

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

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

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

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

C++의 표준헤더: c를 더하고 .h를 빼라. 이렇듯 C언어에 대응하는 C++ 헤더파일 이름의 정의에는 일정한 규칙이 적용되어 있다. 이렇듯, 표준 C에 대응하는 표준 C++ 함수는 C++ 문법을 기반으로 변경 및 확장되었다. 따라서 가급적이면 C++의 헤더파일을 포함하여, C++의 표준함수를 호출해야 한다. 표준 C의 abs 함수 대응하는 C++의 표준 abs 함수

Q&A