728x90
728x90

포인터 4

Visual Studio 디버깅에서 메모리 값 확인하기

포인터, 변수의 주소에 대해서 그냥 책으로 그림만 그려가면서 공부하면지나치게 추상적으로 받아들여지고 실제로 그렇게 작동하는지 의심을 할 수도 있다.실체를 눈으로 보길 원하는 사람들에게 이건 반드시 그렇게 동작한다고 이야기하거나, 그냥 무작정 이렇게 돌아가니까 그런 줄 알고 활용만 잘하면 된다라고 하기보다는 직접 보여주는 게 좋은데, 비주얼 스튜디오(Visual Studio)의 편리한 디버깅 툴을 이용하면 어렵지 않게 실제 메모리에 어떻게 할당되는지 볼 수 있다. #include #include using namespace std; class Student { public: string name; int sNo; void Print(); static int studentNumber; static Stude..

C, C++] 이중 포인터를 이용해 2차원 배열 사용하기

동적 할당을 사용하면 포인터는 배열처럼 사용할 수 있다.여기까진 포인터를 어렴풋이 아는 입문자들도 포인터의 연산과 배열의 인덱스를 연관지어 어렵지 않게 이해할 수 있는 부분인데, 문제는 이중 포인터를 이용해서 2차원 배열을 선언할 때 발생한다. 일단 본론에 들어가기 앞서, 포인터를 이용해서 배열을 사용하는 방법을 그림과 식으로 이해해보자. Cint* ptr = NULL; ptr = (int*)malloc(sizeof(int)*5); C++ int* ptr = nullptr; ptr = new int[5]; 어렵지 않게 요소 5개 짜리 int형 배열을 동적 할당했다. 포인터를 외우듯 공부한 사람들이어도 아래 그림까지는 어렵지 않게 그려내고 이해할 수 있다. 이제 2차원 배열을 어떻게 동적 할당할 지 생각해..

C++] RTTI(Run-Time Type Information)

RTTI(Run-Time Type Information)실행 중 객체의 타입과 관련된 정보를 알아내는 기법실행 중 포인터가 가리키는 객체의 실제 타입을 알아야 하는 경우,클래스가 상속 관계에 있을 때 포인터가 가리키는 객체가 파생클래스의 객체인지기본클래스의 객체인지 판단해야 하는 경우, RTTI 기법을 이용해 알아낼 수 있다.RTTI 활용을 위해서는 typeinfo 헤더를 포함시켜야 함. type_info 클래스는 typeid 연산자에 의해 반환되는 정보로,타입 이름과 같은 타입에 관한 정보를 가진 클래스임 123456789class type_info{public: bool operator==(const type_info& rhs); bool operator!=(const type_info& rhs); ..

C, C++] 함수를 인자값으로 활용하기

함수를 인자값으로 활용하여전달된 함수에 따라 내림차순과 오름차순 정렬을 시행하게 하는 프로그램어지간한 과제는 그냥 무난하게 했는데 이번 건 보고 조금 당황.함수를 인자값으로 쓰는 일이 드물다 보니까, 처음에 보고 좀 난해했음.사용된 정렬은 삽입정렬(Insertion Sort) 1234567891011121314151617181920212223242526272829303132#include #include #define TRUE 1#define FALSE 0 typedef int element; int ascend(element x, element y){ if (x y) return FALSE; return TRUE;}void InsertionSort(element list[], int n, int (*f..

728x90