728x90
ch11. 포인터 11.1 포인터 포인터 : 메모리 주소를 갖는 변수 주소연산자 : 해당 변수이름의 주소를 반환 [포인터의 선언] -포인터: 변수의 주소를 가지는 변수 int *p; 11.2 간점참조연산자 -포인터를 통해 메모리를 다시 간접 참조 -포인터가 지칭하는 변수 주소 속의 값을 사용 간으 -포인터 이용하면 변수를 간접 참조 가능 cf. 직접 참조 : 변수의 이름으로 접근하여 변수 값 참조 간접 참조 : 포인터 이용하여 변수 값 참조 -메모리 주소 byte단위 주소 : %u (부호없는 10진ㄴ수) 포인터 주소 :%p (16진수) 11.3 포인터 사용 주의점 [초기화하지 않고 사용 시] -쓰레기값 가지게 됨 -컴파일 시 체크안됨 -NULL로 초기화해둘 것 ! [포인터 타입과 지칭하는 변수의 타입 반..
ch10. 배열 -배열 : 같은 종류의 대량 데이터들 여러 개 저장하는 저장장소 [배열 특징] -메모리의 연속적인 공간에 저장됨 -인덱스로 각 요소에 차례로 접근하여 처리 가능 [배열 선언] -int 배열명[크기]; //배열 크기는 정수형 상수만 사용 가능 (변수 사용 불가) //전처리기로 정의해둔 기호상수까지는 사용 가능 [배열 요소 접근] -각각의 배열 요소 한 개 = 변수 1개 인덱스로 접근하여 각 배열 요소에 값을 저장, 요소에 저장된 값을 꺼내올 수도 있음 [배열과 반복문] for문으로 배열 처리 효과적 [인덱스 범위] -배열 인덱스 범위 초과하여 접근 시 쓰레기값 출력 (컴파일 시에는 오류 체크 X) -배열 인덱스 범위 초과하는 인덱스에 값을 저장할 경우 중단될 수 있음 -엉뚱한 메모리 위치로..
ch09. 함수와 변수 9.1 변수의 속성 [변수의 속성] (3가지) -유효범위 : 변수 참조(사용) 가능 범위, 변수가 정의되는 위치에 따라 달라짐 -생존기간 : 메모리에 존재 시간 -연결 : 다른 영역에 있는 변수와의 연결 [지역변수와 전역변수] : 변수가 선언되는 위치에 따른 분류 -지역변수 : 블록 내부에서 정의 -전역변수 : 블록 외부에서 정의 9.2 지역변수 -지역변수 : 블록 내부에서 정의됨 : 선언된 블록 안에서만 접근과 사용 가능 [지역변수 선언위치] -블록의 맨 첫 부부에서 정의 (최근에는 블록 안이면 어디든지 선언 가능) [이름이 같은 지역변수] -지역변수는 기본적으로 선언된 블록 안에서만 유효하므로 선언되어있는 지역만 다르다면 동일한 이름의 변수가 또 존재해도 문제 발생 X [지역변..
BFS : 너비우선탐색 DFS : 깊이우선탐색 [게임 구조 설명] # :벽을 의미 E :적 P :플레이어 bfs_map[][] step1) 0 1 2 3 4 5 6 : X 0 # # # 1 # # # # 2 # # P 3 # E # 4 # # 5 # # 6 # # Y X, Y E 적 위치 = (2, 3) P 내 위치 = (4, 2) step 2) 부모 인덱스 번호 = -1 (초기값) step 3) bfs_list --> [0] (2, 3, -1) //적의 위치를 시작 위치로 [0] 0 1 2 3 4 5 6 : X 0 # # # 1 # # # # 2 # # P 3 # [0] # 4 # # 5 # # 6 # # bfs_list ---> [0] (2, 3, -1) //적 E 위치 (0)기준 -> [1] (2,..
-오버로딩 (중복 함수) -> 함수이름과 기능은 같지만 매개변수 자료형만 다른 여러 개의 함수들을 정의하는 것 -오버라이딩 (함수 재정의) -> 상속받은 멤버함수를 자식클래스 입맛에 맞춰 재정의한 함수 [템플릿 함수] -함수를 찍어내기 위한 형틀 -> 함수이름과 기능은 같지만 매개변수 자료형을 다르게 받고 싶을 때, 여러 개의 함수를 만들지 않고, 하나의 함수틀을 정의하여 (원하는 타입 인수 호출하면 ‘템플릿 함수’ 가 T를 인수 타입에 맞춰 치환되어 함수 기능 사용을 자유롭게 할 수 있도록 만든 것) template //T 가 타입 이름으로 사용된다는 것을 컴파일러에게 알려주기 위한 문장 (없으면 컴파일오류) T get_max(T x, T y) { } -> 실제 함수를 정의해준 것X -> 함수 생성틀만..
[클래스 상속] : inheritance : 클래스 상속은 이미 정의되어있는 부모 클래스의 멤버 변수, 멤버 함수들을 물려 받아서 상속받은 자식 클래스에서eh 그대로 사용 가능하도록 만들어진 기능이다. -자식 클래스에서는 부모 클래스 속 public, protected로 선언된 멤버들을 사용O private 로 선언된 멤버는 사용 X class 자식클래스이름 : public 부모클래스이름 { private: //멤버변수 선언 public: //멤버함수 선언 }; [상속, 생성자] -기본적으로 (부모 생성자 -> 자식 생성자 -> 자식 소멸자 -> 부모 소멸자) 순으로 호출된다. -특별히 부모 생성자 지정X -> 부모의 기본생성자가 가장 먼저 자동 호출된다. -특별히 부모 생성자 지정O -> 자식 생성자 ..
[객체 포인터] :객체 전용 포인터 변수가 있다. 클래스이름 *객체포인터_변수이름; NewClass Object(10); //멤버변수를 10으로 초기화하며 객체 선언 동시에 생성 NewClass *ptr_Object; //객체 포인터 선언 ptr_Objext = &Object; //지칭할 객체의 주소를 객체 포인터에 넣어줌 -‘객체’에서 자신의 멤버변수나 멤버함수에 접근할 때는 도트 연산자(.) 를 사용한다. 객체.멤버변수 객체.멤버함수 -‘객체 포인터’에서 자신의 멤버변수나 멤버함수에 접근할 때는 ( -> 연산자)를 사용한다. 객체포인터 -> 멤버변수 객체포인터 -> 멤버함수 int main() { Television SStv; Television LGtv(40, 10, 0); Television *p..
*Copy Constructor 복사 생성자 CodeNum ModelNum SerialNum SStv 101 10131 101551 LGtv 102 10242 102341 HDtv 103 10354 103423 GStv 104 10423 104311 얕은 복사 (=Shallow Copy)와 깊은 복사(= Deep Copy) 복사하는 방법에는 얕은 복사, 깊은 복사 두 가지 방법이 있다. 얕은 복사 : 말 그대로 일반 변수의 값은 그대로 복사하고 포인터 변수의 주소값도 그대로 복사한다. -> 그래서 서로 다른 두 포인터 변수들이 같은 주소를 공유하게 된다 -> 그래서 하나의 포인터 변수가 정보를 수정하면 다른 포인터 변수의 정보도 따라서 수정이 된다 (문제) 깊은 복사 : 복사 생성자(=Copy Const..
생성자(Constructor) 소멸자(Destructor) -생성자 – 객체 생성 시 자동으로 실행되는 함수이다. -주로 멤버 변수들의 초기값 지정하는 일을 한다. -소멸자 - 생성자와 반대되는 개념이다. 생성자의 특징들 1) 특별한 멤버함수이다. 2) 생성자의 이름은 클래스 이름과 같다. 3) 생성자는 따로 자료형 지정 X 4) 생성자는 멤버변수들을 초기화한다. 5) 생성자 오버로딩을 통해서 객체마다 다양한 초기값 갖게 만든다. 소멸자의 특징들 1) 소멸자는 객체가 소멸될 때, 자동으로 실행되는 함수이다. 2) 소멸자는 객체 정리해주는 멤버함수이다. 3) 소멸자 이름은 클래스 이름과 같은데 이름 앞에 ~기호붙인다 4) 소멸자는 자료형을 지정 X 5) 소멸자는 매개변수를 지정할 수 없다. class 클래..
1. Node 구조체 개념 -> 객체 개념과 일정 부분 닮아 있다. //6주차 수업내용 #include #include using namespace std; typedef struct Node { //노드 구조체 int ID; int data; struct Node* next; }; struct Node F_Initialize(int pID = 1 , int pData = 10 ) { //노드 데이터 초기화 반환 함수 struct Node n; n.ID = pID; n.data = pData; n.next = NULL; return n; } //함수 오버로딩해서 사용하기 int F_sum(int x, int y) { //정수합 계산 함수 int z; z = x + y; return z; } int F_s..
[객체지향 프로그램이 4대특징] 다형성 Polymorphism 추상황 Abstraction 캡슐화 Encapsulation 상속성 Inheritance [Default Function Parameter //디폴트 인수] :함수 선언 시, 함수 매개변수에 초기값을 지정한다. 이후 해당 함수 호출 시, 매개값 O 호출 --> 매개값으로 다시 초기화 매개값 X 호출 --> 함숨 선언 시 지정된 초기값으로 초기화 [Function Overloadiong (함수 오버로딩) 함수이름중복 cf. 오버라이딩(재정의) ] :함수 반환형, 함수 매개변수 개수나 자료형을 달리해서 함수의 이름이 같은 여러 개의 함수를 정의하는 방법 [Class(클래스)] : 클래스는 자료를 저장하는 변수들의 모임, 자료 처리하는 함수들의 모..
1. 동적메모리할당: new연산자 동적메모리반환: delete연산자 -> 구조체변수로 내부 멤버에 접근 (.) 도트연산자 #include #include #include using namespace std; typedef struct student { //구조체 int ID; int Age; char Name[30]; float GPA; //학점평균 }student; int main() { student st1; student st2; student st3 = { 202001, 20, "Michael", 4.0 }; //선언과 동시에 초기값 지정 //구조체타입 배열 student st4[3] = { {202002, 22, "Kim", 4.1}, {202003, 23, "Lee", 4.2}, {202004..
1. 정적할당, 동적할당 #include //c++의 표준 입출력 헤더파일(cin, cout객체 포함) using namespace std; //이름 공간 설정 #include int main() { int* ptr1 = new int; //1개의 int형 공간 동적할당하여 포인터로 그 주소 지칭 int* ptr10 = new int[10]; //10개의 int형 공간 동적할당 *ptr1 = 50; cout
1. 포인터 -값의 개념과 주소의 개념을 구분해서 생각할 것 #include //c++의 표준 입출력 헤더파일(cin, cout객체 포함) using namespace std; //이름 공간 설정 int main() { int i = 0; //일반 변수 int* ptr_i; //포인터 변수 int* ptr_x = &i; ptr_i = &i; //값의 개념 cout
1. int형 (1~num)까지의 sum값 누적하여 구하기 -num은 사용자에게 입력받는 값 #include using namespace std; int main() { int num; //사용자입력값 int sum = 0;//밑 막는 용도 cout > num; if (num >= 1) { //입력값 양수인 경우 for (int i = 1; i = num; i--) { sum += i; } } cout
ch04. 클래스와 객체 04-1. 객체 지향의 개념 [객체 지향] : 다양한 기능 객체들이 존재하고, 이러한 객체들을 조합하여 원하는 기능 구현하는 기법 -프로시저(함수)를 기반으로 하는 프로그래밍 방법 -전체 프로그램은 함수들의 집합 -설계 방법 : 하향식 설계(top down design) - 단점 : 데이터와 함수가 분리된다. 1) 과도한 전역 변수의 사용 : 전역변수는 모든 함수에 대하여 개방되기 때문에 어떤 함수든지 쉽게 데이터 변경 가능 2) 프로그램의 이해 어려움 : 프로그램의 복잡도 일정 수준 넘어가면 코드의 이해가 어렵다. 3) 프로그램 변경 확장의 어려움 : 프로그램의 복잡도 높아질수록, 프로그램 수정도 어려워진다. ex) 어떤 함수를 수정할 경우 다른 함수들의 영향 받는 경우 多 -..
ch03. 함수와 문자열 03-1. 함수 -특정 기능 수행하여 결과값 반환하는 함수 [함수 정의 형식] 반환형 함수이름 (매개변수) { //내부 작성 } [함수 원형 정의] -함수 사용하기 전에 컴파일러에게 사용할 함수 정보 알려주는 것 -내부 실행부가 없고 ;(세미콜론)만 붙여줘서 함수 원형 정의 반환형 함수이름 (매개변수) ; [함수 매개변수에 인수 전달 방법] (1) 값으로 호출 (call-by-value) -인수의 값이 매개변수로 복사되어 전달 -원본 변수에는 영향 X (2) 참조로 호출 (call-by-reference) -원본 변수가 매개변수로 전달 -원본 변수 값에 영향 O (ㅇ참조자가 참조하는 원본변수의 값이 변경됨) - C++: (포인터X) 참조자 선언하여 호출 &참조자: 원본변수에 대한..
ch02. 제어 구조와 배열 02-1. 제어 구조 [프로그램의 제어구조] 순차 구조 : 순차대로 프로그래밍 선택 구조 : if문, switch문 반복 구조 : for문, whiile문 [if-else문 형식] if (조건식) { } else{ } [if-else if-else 문 형식] if (조건식 1) { } else if (조건식 2){ } else{ } [switch문 형식] switch (선택값 ) { //선택값 일치하는 case문 실행 case 값1: break; case 값2: break; default: break; } [while문 형식 ] while (조건식) { //조건식이 참인 동안 반복 ..// } [do-while문 형식 ] do { }while(조건식) ; [for문 형식] f..
[객체지향 프로그래밍]_[C++] ch01. C++언어 기본 [절차지향 프로그래밍] - 주어진 작업을 함수들로 분리하여 처리 [객체지향 프로그래밍] - 주어진 작업을 객체들로 분리하여 처리 - 최대목표 = ‘코드의 재사용’ * C++: C언어에 객체지향 프로그래밍 기능을 추가해서 만든 언어 (C언어와의 호환성O) : 기계어 코드를 생성하기 때문에 다른 종류의 컴퓨터에서는 실행 불가능 -> 빠른 속도 실행 O, 고성능 소프트웨어에 유리 : 가상 기계 코드를 생성하기 때문에 다른 종류의 컴퓨터에서도 바로 실행 O -> 이식성 있는 프로그램 작성에 유리 [C++ 프로그램 개발 단계] -텍스트 에디터로 소스파일(.cpp 파일) 작성 -> 컴파일 -> 실행파일(.exe 파일) -> 실행 [비주얼 스튜디오 사용] ..