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

박병현님의 프로필 이미지

작성한 질문수

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

10.14 2차원 배열과 포인터

질문입니다

작성

·

227

0

float (*pa)[4]; 와 float* ap[2]; 를 비교한 내용이 있는데,

float (*pa)[4]; 는 언제 사용하는지 그 용법이 알고싶습니다! 왜 필요한지를 모르겠어요ㅜㅜ

답변 4

1

박병현님의 프로필 이미지
박병현
질문자

근데 2차원 배열을 포인터를 선언할때

int (*a)[2] 이런식으로 선언할수도 있고

int **a 이런식으로 선언할수도있는데, 함수의 파라미터로 만드는 목적이면 사실 1차원배열요소의 크기를 자유롭게 할수있는 후자가 훨신 호환성이 좋고 활용도가 높은것아닌가요?ㅜㅜ

0

박병현님의 프로필 이미지
박병현
질문자

단순 포인터는 배열처럼 사용할수 있지 않나요? 얘를들어 int *pa = {1 , 2 , 3}; 이라하고 int a = pa[1]; 식으로 사용할수 있는데 이중포인터는

아래사진처럼 사용할수없는 단점이 있어서 그런가요? 아니면 제가 방향을 잘못잡고 생각하는건가요?ㅠㅠ

0

바로 이중포인터를 사용하면 좀 문제가 생길텐데... 한 번 시도해보셨으면 좋겠군요. 불가능한 것은 아닙니다만 구현에 따라 몇 가지를 해주어야할겁니다.

0

제가 주로 쓸 때는 다른 함수의 parameter로 2차원 배열을 넘겨줄때 사용합니다.
ex)int arr2d[2][4] 의 경우
int func(int (*pa) arr2d[4])       or        int func(int arr[][4]) ....