ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 포인터와 메모리 해제 (1)
    C++ 2025. 3. 18. 17:33

    C++는 객체 지향 프로그래밍으로 배열의 크기를 실행 시간에 결정할 수 있다.

    이는 배열의 크기를 동적으로 할당할 수 있다는 얘기이다.

    기존 C언어에서는 malloc, calloc, realloc, free 함수 등을 사용해서 메모리를 동적으로 할당했지만,

    C++에서는 new와 delete를 사용할 수 있다.

    포인터는 사용할 주소에 이름을 붙인다. 

     간접값 연산자, 간접 참조 연산자 *를 사용할 수 있다.

    int *a;		//C style
    int* b;		//C++ style
    int* c, d;	//c는 포인터 변수, d는 int형 변수
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int main() {
        
        int a = 6;
        int* b;
    
        b = &a;
    
        cout << "a의 값 " << a << endl;
        cout << "*b의 값 " << *b << endl;
    
        cout << "a의 주소 " << &a << endl;
        cout << "*b의 주소" << b << endl;
    
        *b = *b + 1;
    
        cout << "이제 a의 값은 " << a <<endl;
        
        return 0;
    }

    일반 변수 a를 6으로 초기화하고, 포인터 변수 b를 선언했다.

    먼저 a의 값을 출력하면 6이 나오고, *b의 값을 출력하면 a의 주소에 해당하는 값을 출력한다.

    *b의 주소값은 a의 주소값을 가리키고 있기 때문에 a의 주소와 *b의 주소값은 같다.

    포인터로 선언된 변수의 값을 확인할때는 간접참조연산자(*)를 붙여야하고, 주소를 확인할때는 기호를 붙이지 않는다.

    일반적으로 포인터는 정수와는 다른 개념이기때문에 정수는 수 이지만, 포인터는 위치를 나타낸다.

    변수의 주소를 대입함으로써 포인터를 이용해서 주소의 값을 변화를 주어 수정하는 것은 가능하다.

     

    'C++' 카테고리의 다른 글

    C++ 포인터 연산  (0) 2025.03.18
    C++ 포인터와 메모리 해제 (2)  (0) 2025.03.18
    C++ 공용체와 열거체  (0) 2025.03.18
    C++ 구조체  (0) 2025.03.18
    C++ 사용자 입력과 String  (0) 2025.03.18
Designed by Tistory.