• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

5분 40초 쯤 질문입니다.

20.11.27 16:09 작성 조회수 155

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

Hello Yeo님의 프로필

Hello Yeo

2020.11.28

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

0

cjkoo96님의 프로필

cjkoo96

질문자

2020.11.28

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

0

Hello Yeo님의 프로필

Hello Yeo

2020.11.27

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