본문 바로가기

반응형

포인터

(6)
[문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 6 : new & delete 연산자 오버로딩 (new 연산자 오버로딩에 대한 상세한 이해, operator new & operator new[ ]) [문과 코린이의 IT 기록장] C,C++ - 연산자 오버로딩 6 : new & delete 연산자 오버로딩 (new 연산자 오버로딩에 대한 상세한 이해, operator new & operator new[ ]) 1. new 연산자 오버로딩에 대한 상세한 이해 - new & delete 연산자 오버로딩은, 기존의 앞서 봤던 연산자 오버로딩과 많이 다르다. * new & delete 또한, 연산자이다. 따라서 연산자 오버로딩이 가능하다. 1) new 연산자가 하는 일 a. 메모리 공간의 할당 b. 생성자의 호출 c. 할당하고자 하는 자료형에 맞게 반환된, 주소 값의 형 변환 - 이와 같이, 객체의 생성과정은 다소 복잡한 과정을 거친다. - 그러나 이 중, 생성자의 호출과 반환된 주소값의 형변환은 컴파일러가 ..
[문과 코린이의 IT 기록장] C,C++ - This포인터( 숨겨져 있는 this 포인터, 명시적으로 this 참조하기 ) [문과 코린이의 IT 기록장] C,C++ - This포인터( 숨겨져 있는 this 포인터, 명시적으로 this 참조하기 ) [ 클래스의 맴버 함수를 호출할 때, C++은 어떻게 호출할 객체(인스턴스)를 찾는가? ] : 이 질문에 대한 정답은, this라는 숨겨진 포인터를 사용한다는 것이다. - main함수 'simple.SetID(2);'에서 보면, SetID()맴버함수가 객체(인스턴스) simple에서 작동해야 한다는 것을 알고, m_ID는 simple.m_ID를 참조한다. 이 과정이 어떻게 작동되는지 알아보자. 1. 숨겨져 있는 this 포인터 1) simple SetID(2); // 이 코드는 맴버 함수 SetID()가 하나의 인수만 가지고 호출하는 것처럼 보이지만, 실제로는 두 개의 인수를 가지고..
[문과 코린이의 IT 기록장] C,C++ - 포인터 배열 (포인터 배열 예제) [문과 코린이의 IT 기록장] C,C++ - 포인터 배열 (포인터 배열 예제) 1. 포인터 배열 - 배열의 요소로 포인터를 지니는 배열 - 배열포인터, 즉 배열들을 가르키는 포인터와 다른 개념이다. * 용어를 헷갈리지 말자! * 배열 포인터 : 배열들을 가르키는 포인터 (즉 포인터이다) 포인터 배열 : 포인터들을 담는 배열 (즉 배열이다) int * arr1[10]; // int형 변수를 가르키는, 포인터 배열 arr1은, 포인터 변수 10개를 담는다. (변수 10개를 가르킨다.) double * arr2[20]; char * arr[30]; - 포인터 배열 정의 방법 ex 1 ) 포인터 배열 예제 1 ex 2 ) 포인터 배열 예제 2 ex 3 ) 포인터 배열 예제 3 * 유의사항 - 아직 공부하고 있는..
[문과 코린이의 IT 기록장] - C,C++ 2차원 배열(2차원 배열, 2차원 배열에서의 포인터, 2차원 배열의 연산) [문과 코린이의 IT 기록장] - C,C++ 2차원 배열(2차원 배열, 2차원 배열에서의 포인터) 1. 2차원 배열의 [ ]연산자 int A[2][3];이 표현되는 방식 ex ) 이를 보면 arr[0] = &arr[0][0]이고, arr[1] = &arr[1][0]라는 것을 알 수 있다. 이를 통해, 1차원배열과 마찬가지로 sizeof나 주소값 연산자와 사용되지 않을 경우, arr[0]은 arr[0][0]을 가리키는 포인터로 암묵적으로 타입 변환되고, arr[1]은 arr[1][0]을 가리키는 포인터로 타입 변환된다. 2. 2차원 배열 sizeof ex ) - 총 열의 개수 : sizeof(arr[0]) / sizeof(arr[0][0]); // 총 열의 개수는 한 행의 크기에, 한 배열의 크기를 나누면..
[문과 코린이의 IT 기록장] - C,C++ 포인터와 배열 ( 배열, 포인터와 배열, 포인터 연산, 문자배열, 포인터의 포인터) 1. 배열 : 변수가 여러개 모인 것. ex) // 각각 한 개의 원소마다, int형이기 때문에 4byte씩 차지한다. // 자료형에 따라, 주소값 또한 4씩 증가한다. 2. 포인터와 배열 ① (parr + i) = & arr[i] 만약, p라는 포인터가 int a를 가르킨다면? p+1 = (p의 주소값) + 1*4 p+3 = (p의 주소값) + 3*4 이 아이디어를 기반으로, 배열의 원소를 가르키는 포인터를 만들어 보려고 한다. parr이 int형이므로, +i를 하면, 주소값에는 4*i씩 더해지는 것이다. 이 때 arr[i]도 int형 배열이므로, +i가 될 때마다, 4씩 증가하게 된다. 따라서 모든 결과가 일치하게 된다. ② arr = &arr[0] 이 예제에서 보면 알 수 있듯이, arr은 arr[..
[문과 코린이의 IT기록장] C, C++ - 포인터 정리 (포인터, &, *, 상수 포인터, 포인터의 덧셈, 포인터의 대입) [ 변수에 대한 기본설명 ] Int a = 123; // int는 4 byte이므로, 메모리의 4칸을 차지한다. * 이 변수의 주소가 0x 123456이라고 가정 a = 10 ; // 메모리 0x 123456 위치에서 부터 4byte의 공간에 있는 데이터를 10으로 바꾸어라. 1. 포인터 - 포인터란? : 메모리 상에 위치한 특정한 데이터의 (시작)주소값을 보관하는 변수 - 형태 : (포인터 주소값이 저장되는 데이터의 형) *(포인터의 이름) ; ex) int * P; // 포인터 P는 int형 데이터의 주소값을 저장하는 변수 2. & 연산자 ( 피연산자가 1개인 단항연산자 // AND연산자와 다르게 해석 ) - 형태 : & (주소값을 계산할 데이터) ex) #include using namespace ..

반응형