읽는 방법 right / left 규칙 1. right : 정체 2. left : 용도 ex) int *p[3]; 정체 : 배열이 3개 용도 : int pointer -> int *가 3개인 배열 int * int * int * ex) (*p)[3]; 정체 : 포인터 용도 : 한 행당 요소의 갯수가 3개 -> 한 행당 3개의 요소를 갖고 있는 2차원 배열 #include "stdafx.h" #include #include using namespace std; void main() { int a[2][3] = { 6,5,4,3,2,1 }; int i, j; int (*p)[3]; p = a; // 초기화 for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { //아래의..
동적 메모리 동적 메모리는 이름이 없다 전역 변수를 사용하면 안된다 기본 형태 데이터 타입 *함수 이름 = new 데이터 타입 ex) int *p = new int; C 스타일 : ((int *)malloc(sizeof(int)); C++ 스타일 Example) 선언 : int *p; p = new int; p1 = new int[3]; // 배열 해제 : delete p; delete p1; // p1이 가리키는 주소만 지움 -> 다 지우는게 아님 delete [ ]p1; // 다 지움 - 배열 삭제하기 전까지는 p의 위치를 바꿔서는 안된다 #동적 메모리를 할당 할때, 소멸자가 하나밖에 없기 때문에 크기가 하나라도 배열로 선언한다 ex) int *p = new int[1]; 동적 메모리 - 성적 처리 ..
주소값 표현 방법 1. &변수 2. 배열명 3. 함수명 4. 문자열 5. 포인터 포인터 : 크기는 4byte로, 주소를 저장하는 변수 -> 간접 변수 pointer = point (address) + er -> 지시자 기본 형식 가르키는 타입 * 변수명; 기능 1. 오직 주소만 받을 수 있다 2. 받은 주소의 값을 알 수 있다 3. 받은 주소의 값을 변경할 수 있다 4. 주소를 사용할 수 있다 5. 1:1 방식 -> 동시에 여러개를 잡지를 못한다 포인터 법칙 1. 첨자와 갯수가 같으면 값, 다르면 주소이다 2. 주소도 차원이 있다 - 1개가 부족하면 1차원, 2개가 부족하면 2차원, 3개가 부족하면 3차원 3. 1차원 주소자에 +1을 하면, 한 요소의 사이즈 (하나의 변수) 2차원 주소자에 +1을 하면,..
call by value : 값을 사용 call by adress : 주소값을 지정해서 사용 call by reference : '*'를 쓰지않고 포인터 처럼 값을 넣어서 사용 #include "stdafx.h" #include using namespace std; //사용자 정의 함수 선언 void disp(int a); int input(int a); void input_add(int *a); void input_ref(int &a); void main() { int a = 10; disp(a); a = input(a); //call by value input_add(&a); //call by address input_ref(a); //call by reference disp(a); //int &a ..
C++ : 객체지향 C = C + 1 //1은 OOP - 즉, C에서 사용되는 모든것 + OOP OOP : Object Oriented Programming 1. 추상화 : 추상적인것을 구체적으로 표현 // 제일 중요!! 2. 캡슐화 : 데이터를 안정적으로 쓰기 위함 , 데이터 보호 및 은닉 3. 상속 : 부모로부터 물려 받음, 코드의 재활용 및 확장성 4. 다형성 : 여러가지 형태를 제공함으로써 편의성을 제공 ex) 오버로딩, 동적 바인딩, 제네릭 bool - 0 이나 1 , true 이거나 false - 자바와 다르게 둘다 적용 가능 AND : 둘다 true 일 때 OR : 둘중 하나만 true 일 때 function : 어떠한 특정 기능을 수행하는데 사용하는 '기능' 헤더파일 : _______.h ..