포인터 그리고 배

서병수·2023년 9월 5일
0

C++

목록 보기
2/4

C++은 객체를 스택이나 힙에다 할당할 수 있다.
스택에 할당된 객체는 지역변수로서 해당함수가 종료되면 자동으로 해제된다.
힙에 할당된 객체는 개발자가 직접해제를 해주어야 한다.

먼저 Point라는 클래스의 객체 하나를 만들어보겠다.

  1. 스택에 생성
    Point p;
    -> 스택에 Point 객체 하나를 만들고 이름을 p1으로 지음

  2. 힙에 생성
    Point *p = new Point();
    -> 힙에 Point 객체 하나 만들고 주소값을 p1에 저장.

  3. 스택에 객체 배열 생성
    Point p[3];
    -> 스택에 Point 객체 배열을 3개 만들고 p[i]에 객체를 저장

  4. 스택에 객체 포인터 배열 생성
    Point *p[3];
    -> 스택에 Point 객체 포인터 배열을 3개 만들고 p[i]에 주소를 저장

  5. 힙에 객체 배열 생성
    Point *p = new Point[3];
    -> 힙에 Point 객체 배열을 3개 만들고 p[i]에 객체를 저장
    -> p에는 배열의 첫번째 주소를 저장

  6. 힙에 객체 포인터 배열 생성
    Point **p = new Point[3];
    ->힙에 Point 객체 포인터 배열을 3개 만들고 p[i]에 주소를 저장
    ->p에는 배열의 첫번째 주소를저장

    #define _CRT_SECURE_NO_WARNINGS
    using namespace std;
    #include <iostream>
    #include <cstring>
    class Point
    {
    public :
    	void show()
    	{
    		cout << "안녕" << endl;
    	}
    };
    int main()
    {
    	Point p1;  //스택에 선언
    	Point* p2 = new Point(); // 힙에 선언
    	Point p3[3];
    	Point* p4[3];
    	Point* p5 = new Point[3];
    	Point** p6 = new Point * [3];
    
    	p1.show();
    	p2->show();
    	p3[0].show();
    	p4[1]->show();
    	p5[1].show();
    	p6[1]->show();
    }
profile
안녕하십니까 인사올립니다

0개의 댓글