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 태그좀 붙여주세요
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력