강의

멘토링

커뮤니티

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

c쌩초보님의 프로필 이미지
c쌩초보

작성한 질문수

&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 만큼 다음 주소값.

c쌩초보님의 프로필 이미지
c쌩초보
질문자

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

c쌩초보님의 프로필 이미지
c쌩초보

작성한 질문수

질문하기