본문 바로가기

Programming/C++

C++ 이중포인터와 동적 다차원 배열

이중 포인터의 이해를 돕기위한 코드

 

#include <iostream>

using namespace std;

int main()
{
    int *ptr = nullptr;
    int **ptrptr = nullptr;

    int value = 5;
    ptr = &value;
    ptrptr = &ptr;

    cout << "ptr이 가르키는 주소" << ptr << "\nptr의 가르키는 주소의 값" << *ptr 
    << "\nptr 자체의 주소값" << &ptr << "\n"
         << endl;

    cout << "ptrptr이 가르키는 주소" << ptrptr << "\nptrptr의 가르키는 주소의 값" 
    << *ptrptr << "\nptrptr 자체의 주소값" << &ptrptr << "\nptrptr이 두번에 거쳐 가르키는 값" 
    << **ptrptr << endl;

    return 0;
}

 

 

 


#include <iostream>

using namespace std;

int main()
{
    const int row = 3;
    const int col = 5;

    //두번째 col은 표시를 해주어야 함
    const int s2da[row][col] = {
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15}};

    // 이중포인터를 이용한 2d array 만드는 방법
    int **matrix = new int *[row];

    for (int i = 0; i < row; i++)
    {
        matrix[i] = new int[col];
    }

    //초기화
    for (int i = 0; i < row; i++)
    {
        for (int c = 0; c < col; c++)
        {
            matrix[i][c] = s2da[i][c];
        }
    }

    //print all element
    for (int i = 0; i < row; i++)
    {
        for (int c = 0; c < col; c++)
        {
            cout << matrix[i][c] << " ";
        }
        cout << endl;
    }

    //delete
    for (int i = 0; i < row; i++)
    {
        delete[] matrix[i];
    }

    delete[] matrix;

    return 0;
}

2중 포인터를 사용하지 않고 2d array를 만드는 방법

1d array를 2d array처럼 사용한다

#include <iostream>

using namespace std;

int main()
{
    const int row = 3;
    const int col = 5;

    //두번째 col은 표시를 해주어야 함
    const int s2da[row][col] = {
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15}};

    //이중포인터를 이용하지 않고 1d array를  2d array를 만드는 방법

    int *matrix = new int[row * col];

    for (int i = 0; i < row; i++)
    {
        for (int c = 0; c < col; c++)
        {
            matrix[c + col * i] = s2da[i][c];
        }
    }

    delete[] matrix;

    return 0;
}

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

C++ 기초  (0) 2021.03.31
C++ 메모리 동적 할당, 동적 할당 배열  (0) 2021.03.15
c++ Pointer의 기초  (0) 2021.03.14
C++ 난수 random number 만들기  (0) 2021.03.14
C++ 배열의 반복  (0) 2021.03.14