2차원 배열 포인터 문의

조회수 539회

int **A = { {1, 2, 3, 4} {5, 6, 7 ,8} {9,10,11,12} {13,14,15,16}};

A = &A[0]

A+2 =&A[2] 처럼

11에 해당하는 주소를 지칭하는 int ** 을 표현할 수 있을까요..?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • #include <stdio.h>
    
    main(){
            int A[][4] = {
                    {1, 2, 3, 4},
                    {5, 6, 7 ,8},
                    {9,10,11,12},
                    {13,14,15,16}
            };
            int *iter = &A[0];
            printf("%d\n", *(iter + ( 4 * 2 ) + 2) );
    
            iter = &A[2];
            printf("%d\n", *(iter + 2));
    }
    
    int A[<2차원 자리>][<1차원 자리>];
    배열을 선언할때에는 반드시 1차원 자리의 크기를 명시해 주어야 합니다
    그렇기 때문에 **A = {다차원배열}; 은 성립되지 않습니다
    지금 제가 남겨둔 예시에는 2차원 자리에 해당하는 부분은 비워두웠는데
    이렇게 했을때에 실행은 되지만 컴파일러는 2차원 자리를 명시하지 않았다며
    warning을 뱉어냅니다 물론 실행은 잘 됩니다
    이해가 되셨겠지요?
    

    현석님 태그가 array와 pointer만 있고 c 태그가 붙어있지 않네요 c 태그좀 붙여주세요

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)