이중 포인터의 이해를 돕기위한 코드
#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 |