2중포인터 간단한 코드 질문
새난
2023.04.01
질문 제목 : 질문 내용 :
int m[2][3] = { {1, 2, 3}, {4, 5, 6} };
int (*p)[3] = &m[1];
printf(%d\n, (*p)[1]);이코드 설명좀해주세요 ㅠㅠ
두번째줄 배열m값에 0을주었을땐 2 출력 1을 주었을땐 5가 출력되는데요
도무지 이해가 안갑니다.
-
가랑비
죄송합니다. 고쳤습니다.
-
달달한캔디
질문게시판에는 덧글을 포함해서 반드시 돋움체 또는 굴림체를 사용해야 됩니다.
이 폰트로 계속해서 덧글을 쓰면 탈퇴가 됩니다.
폰트는 자신의 블로그에서 설정할 수 있습니다. -
갤1
두분 감사드립니다.
-
앨런
m[2][3] = { {1,2,3}, {4,5,6} }; 요렇게하면 m[0] 에 {1,2,3} m[1] 에 {4,5,6} 이 들어가겠죵
자 (*p)[3] 이러면 &m[1]; 이러면 m[1]의 주소를 가져오겠죵 *p 에 m[1] 은 456 앞의주소 입니당
(*p)[1] 출력하면 결국 m[1][1] 을 출력하므로 5가 댑니다 0을 너으면 *p 에 m[0] 은 123 앞의 주소 입니당 m[0] 은 123 이니깐 (*p)[1] 이 가르키는 주소는 m[ -
진솔
int (*p)[3] 은 정수형 배열 [3]을 가리킬수 있는 포인터를 선언한겁니다.
&m[1]는 2행의 시작 주소를 가리키는 거죠.즉 {4,5,6}의 시작주소를 가리킴.
따라서 p는 {4,5,6}의 시작주소를 가리킴.
(*p)[1] 는 {4,5,6}의 두번째 값을 리턴함.
5가 나오겠네요.