inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C++

동적 다차원 배열 관련 질문

188

GeunWoo Kim

작성한 질문수 2

0

안녕하세요 강의 잘 듣고 있습니다.

6.19 강의를 듣는 중에 의문이 생겨서 질문 드립니다.

2차원 배열을 동적 할당 할 때에 

const int row = 3;

const int col 5;

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

for (int r = 0; r < row; ++r)

 matrix[r] = new int[col];

위와 같이 예를 들어 주셨는데요.

이중 포인터를 이용해서 2차원 배열 matrix가 어떻게 정의 되는지는 이해를 하였지만

new int*[row] 부분에서 int와 [row] 사이의 *는 무엇을 의미하는 건가요? *[]형태는 처음 보는 것 같아서요.

그냥 new int[row]로 해도 머릿속에선 될 것 같은데 컴파일 해보면

initializing: cannot converet from 'int *' to 'int **' 이라고 나오네요. 

또 메모리 저장되는 것 관련해서도 의문점 이있습니다. 

그냥 정적할당으로 matrix[row][col]; 이런식으로 정의를 하면 

matrix[0][0], matrix[1][0], matrix[2][0] 이 딱 메모리 주소가 20씩 차이나서 연달아 있는데

new를 이용해서 동적할당으로 배열을 정의하면 메모리 주소가 좀 뒤죽박죽이더라구요.

이렇게 되면 큰 배열을 이용해서 실제 계산을 할 때 좀 비효율적이 되지 않나요?  연속적으로 하려면 어떤 식으로

동적 할당을 해야 하나요?

그리고 비슷한 식으로 3차원 배열도 만들어 보았는데요.

d3[nx][ny][nz]인 3차원 배열을 만들기 위해

int ***d3 = new int**[nx];

for (int i = 0; i < nx; ++i)

{

d3[i] = new int*[ny];

for (int j = 0; j < ny; ++j)

d3[i][j] = new int[nz];

}

위와 같이 만들어서 제대로 나오는 것도 확인 했습니다.

문제는 안되지만, 배열 할당하는것치고 조금 코드 자체가 긴것같아서요.. 혹시 조금 더 깔끔하게 만드는 법이 있을까요?

fortran 같은 경우에는 그냥 allocate( d3(nx, ny, nz) )이런 식으로 한 줄이면 끝났거든요. 

질문이 좀 많지만 답변해주시면 정말 감사하겠습니다!  

C++

답변 1

0

홍정모

좋은 질문인데, 해당 강의(해당 영상)에서 질문을 올리실 때만 답변해드리고 있습니다.

자세한 내용은 아래 참고하시고 다시 제대로된 위치에 올리시면 도와드리겠습니다.

https://blog.naver.com/atelierjpro/221547580916

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

466

1

메모리 주소 10진수로 출력

1

653

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

499

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

534

1

메모리 주소에 관한 질분

0

679

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

549

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

443

1

Digit 뒤에 reference를 사용하는 이유

0

510

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

323

1

dat파일이...

0

539

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

644

1

복사 생성자 관련 질문이 있습니다.

0

454

1

수업 중 궁금한점이 있습니다.

1

390

1

라이브러리자체가 이해가 되지 않습니다.

0

561

1

마지막 예제 질문

0

302

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

375

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

411

1

friend함수 관련 질문이 있습니다.

0

312

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

447

1

3분 17초 질문

0

350

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

448

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

445

2

const Something &st에서 const를 빼면 안되나요?

0

300

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

493

1