슬라이드 1

Similar documents
슬라이드 1

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - C++ 5 .pptx

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

설계란 무엇인가?

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

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

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

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

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

C++ Programming

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

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

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

쉽게 풀어쓴 C 프로그래밍

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

설계란 무엇인가?

PowerPoint Presentation

C++ Programming

PowerPoint Template

Microsoft PowerPoint - Chap12-OOP.ppt

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

11장 포인터

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

C프로-3장c03逞풚

Microsoft PowerPoint - [2009] 02.pptx

11장 포인터

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Template

JAVA PROGRAMMING 실습 05. 객체의 활용

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

JVM 메모리구조

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

C++ Programming

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

윤성우의 열혈 TCP/IP 소켓 프로그래밍

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

C++ Programming

설계란 무엇인가?

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

Microsoft PowerPoint - Chapter 1-rev

PowerPoint 프레젠테이션

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

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

프입2-강의노트-const-friend-static

쉽게 풀어쓴 C 프로그래밍

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

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint Presentation

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Blog

PowerPoint Template

Slide 1

쉽게 풀어쓴 C 프로그래밊

설계란 무엇인가?

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

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

JAVA PROGRAMMING 실습 08.다형성

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

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

080629_CFP °ø°³¿ë.hwp

쉽게 풀어쓴 C 프로그래밍

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

Slide 1

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

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

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

PowerPoint 프레젠테이션

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

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

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

untitled

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

프입2-강의노트-C++기초

쉽게 풀어쓴 C 프로그래밍

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

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

PowerPoint Presentation

Microsoft PowerPoint - 제11장 포인터

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

PowerPoint Template

쉽게 풀어쓴 C 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Presentation

Transcription:

정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함 ( 포인터사용 ) - 메모리를할당받으면명시적으로반환해야함 - 메모리를효율적으로사용할수있음

동적메모리의할당 new 연산자를사용함 ( 할당된메모리번지를반환, 할당되지못하면 null 반환 ) 예 ) int *pti = new int; int *pti = new int(10); // 초기화 double *ptd = new double[10]; // 동적배열 동적메모리의사용포인터변수에메모리의번지를저장하여사용 동적메모리의반환 delete 연산자를사용함예 ) delete pti; delete[] ptd; C 언어함수할당 : malloc() 반환 : free() 헤더파일 <stdlib.h>

// 동적메모리관리프로그램 #include <iostream> using namespace std; int main() int n; cout << 정수의수는 : ; cin >> n; int *data = new int[n]; cout << n << 개정수입력 : ; for(int i=0; i<n; i++) cin >> data[i]; cout << < 입력정수 >\n ; for(int i=0; i<n; i++) cout << hex << data+i; cout << 번지 : ; cout << dec << data[i]; cout << endl; delete[ ] data; return 0;

객체도포인터를사용할수있음 - 객체의생성시정적메모리할당또는동적메모리할당을할수있으며, 동적메모리할당은포인터를사용 - 포인터를통하여객체멤버를접근하는경우는 -> 사용 예 ) Animal a; // 정적메모리할당 Animal *pa = &a; Animal *pb = new Animal(); // 동적메모리할당 pa->cry(); pb->cry(); // pa 포인터에의한멤버접근 // pb 포인터에의한멤버접근

this 포인터는자신을가리키는객체포인터임 - this 포인터는컴파일러에의하여자동생성되므로별도로선언할필요없이사용하면됨 - 주로매개변수와멤버변수를구분하기위하여사용하며, 객체자신의주소를반환하는함수에서사용함 예 ) void Animal::set_sp_code(int sp_code) this->sp_code = sp_code; return; // = 왼쪽 this->sp_code는멤버변수 sp_code, // 오른쪽 sp_code는매개변수 sp_code를나타냄

멤버변수에붙이는 const - 멤버변수에 const 를붙이면상수가됨 - 멤버변수에저장된초기값이바뀌지않는경우에사용 ( 생성자의멤버초기화목록으로초기화함 ) 멤버함수에붙이는 const - 멤버함수에 const 를붙이면이함수에서멤버변수에저장된값을바꾸지않는경우에사용 예 ) class Animal void Cry( ) const; // 상수멤버함수 const int sp_code; // 상수멤버변수 ;

객체에붙이는 const - 객체에 const 를붙이면이객체에서는멤버변수의값을바꾸지않는다는것을나타냄 - 상수멤버함수가아닌함수는호출할수없음 예 ) const Animal a(10, 20, 발발이 ); cout << a.get_name( ); // get_name() 이 const 함수이면가능 a.set_name( 똘똘이 ); // 불가능 ( 컴파일에러발생 )

#include <iostream> #include <string> using namespace std; class Car public: const string model; bool power; double speed; Car(string m, bool p=false, double s=0.0):model(m), power(p), speed(s); void set_power(); void set_speed(bool); double get_speed() const; ; void Car::set_power() power =!power; return; void Car::set_speed(bool a) if(!power)return; if(a) speed += 0.1; else speed -= 0.1; return; double Car::get_speed() const return speed; int main() Car car1(" 소나타 "); car1.set_power(); car1.set_speed(true); cout << car1.get_speed() << endl; return 0;

객체도함수의인자로사용가능함 - 함수의매개변수로전달가능 (call-by-value : 멤버변수가복사됨 ) - 함수의반환값으로객체사용가능 - 객체의포인터를함수의매개변수로전달가능 (call-by-address : 객체의주소가전달됨 ) - 객체의참조자를함수의매개변수로전달가능 (call-by-referecce : 객체의별명이전달됨 )

지역변수 : 일반적인변수, 자동변수 - 블록내부에서선언되며블록내부에서만사용가능함 - 블록이실행될때생성되고, 블록실행종료시제거됨 블록이란 로둘러쌓인범위를말함 전역변수 - 함수외부에서선언되며소스파일전체에서사용가능함 - 프로그램의실행시작시생성되어프로그램실행종료까지존재함 외부변수 : 다른소스파일에서선언된전역변수를사용할경우에는외부변수로선언해야함 예 ) extern int no;

정적지역변수 - 블록내부에서선언되며블록내부에서만사용가능함 예 ) static int count; 정적전역변수 - 함수외부에서선언되며선언된소스파일에서만사용가능함 ( 다른소스파일에서외부변수로사용할수없음 ) 정적변수는프로그램의실행시작시생성되어프로그램실행종료까지존재하며, 초기화는 1 번만이루어지고초기값이주어지지않으면 0 또는 NULL 값이저장됨

// source1.cpp #include <iostream> using namespace std; int no; static int s_no; // 전역변수 // 정적전역변수 int main() extern int no; // 외부변수 : ( 생략가능 ) int sub1() int l_no; // 지역변수 : // source2.cpp #include <iostream> using namespace std; int sub2() extern int no; // 외부변수 ( 가능 ) int m_no; // 지역변수 : int sub3() extern int s_no; // 외부변수 ( 불가 ) static int n_no; // 정적지역변수 :

정적멤버변수 - 클래스의멤버변수를정적변수로선언하면, 오직 1 개의메모리를모든객체가공유함 멤버변수의초기화는생성자에서하지않고, 클래스외부에별도로정의함 정적멤버함수 - 클래스의멤버함수를정적함수로선언하면, 오직 1 개의함수를모든객체가공유함 정적멤버함수의호출은객체명을사용하지않고, 클래스명으로호출함, 따라서객체가생성되기전이라도호출될수있음

// 정적멤버프로그램 #include <iostream> using namespace std; class Animal public: Animal(); void Cry(); static int get_count(); ~Animal(); private: int sp_code; int origin_code; string name; static int count; ; Animal::Animal() sp_code = 0; origin_code = 10; name = 발발이 ; int Animal::count = 0; int main() Animal a, b, c; a.cry(); cout << Animal::get_count(); return 0;

정적상수 - 상수를클래스의정적멤버로선언하면, 하나의상수를모든객체가공유함 - 정적상수는클래스에서선언과동시에초기화할수도있음 ( 정수형만가능한컴파일러도있으므로실수는외부초기화를권장함 ) 예 ) static const int count = 0; static const double pi = 3.141592;