인프런 커뮤니티 질문&답변
&A[0]+1과A[1]
작성
·
191
0
#include<stdio.h>
int main() {
int A[][15] = { {1,2,3},{4,5,6},{7,8,9} };
printf("%p\n%p", &A[0] + 1, A[1]);
}
여기서 &A[0]+1값과A[1]값이 같은 이유가 뭔가요 ?
&A[0]=A[0]이어서&A[0] + 1=A[0]+1=&A[0][1]이 되는거 아닌가요?
답변 1
0
안녕하세요!
&A[0] 과 A[0]은 다릅니다. 반면 &A[0] = A 는 같습니다.
&A[0]은 배열 A의 0번째 인자의 시작 주소를 의미합니다.
A[0]은 배열 A의 0번째 인자의 값을 의미합니다.
이 둘을 printf에서 %p 로 출력하면 결과값은 같습니다만, 프로그램상의 의미는 다릅니다.
.
.
&A[0] + 1 = (&(A[0]) + 1 = A[1] 이 성립합니다.
(&(A[0]) + 1 를 글로 풀어 보면
A배열의 첫번째 요소의 주소에서 sizeof(int) * 1 만큼 다음 주소값.





sizeof(int)*1의값은4아닌가요? &A[0]+1을 실제로 출력해보니 A배열의 첫번째 요소의 주소에서 60만큼떨어져있네요.