인프런 커뮤니티 질문&답변

cjkoo96님의 프로필 이미지
cjkoo96

작성한 질문수

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

12.15 동적 할당 메모리를 배열처럼 사용하기

5분 40초 쯤 질문입니다.

작성

·

204

0

int row = 3, col = 2;

int(*ptr2d)[2] = (int(*)[2])malloc(sizeof(int) * row * col);

이 라인에서 2차원 배열 포인터를 만들 때 포인터 변수 뒤에 왜 column 값을 넣어주는 건가요? 저는 같은 row끼리는 같은 포인터 변수를 사용하여 연산할 수 있으므로 row가 넘어갈 때 포인터 변수의 인덱스가 바뀌어야한다고 생각했습니다. 그리고 malloc의 타입 변환에서 (int(*)[2]) 이렇게 선언하는 것도 잘 이해가 안됩니다. 저런  자료형도 존재하는 건가요? 그냥 규칙이라고 받아들여야하나요?

답변 3

1

안녕하세요? 강의에 등장했었던 내용입니다.
(int(*)[2]) 를 언급하셨기에 제가 몰랐네요.
10.14 강의를 참고해보세요.

0

cjkoo96님의 프로필 이미지
cjkoo96
질문자

저 자료형이 무엇인지 고민해봐도 모르겠어서 질문을 드린겁니다...

0

안녕하세요?
int(*ptr2d)[2] 의 자료형이 무엇인지와 pointer arithmetic이 원하는대로 동작하려면 어떻게 해야할까? 를 다시 고민해보시는 것이 좋을 것 같습니다.

cjkoo96님의 프로필 이미지
cjkoo96

작성한 질문수

질문하기