int a[3][2] = {
{1, 3},
{10, 4},
{5, 6}
};
printf("*a : %d \\n", *a); // 시작주소는 언제나 똑같군
printf("*a+2 : %d \\n", *a+2); // 음 4byte로 줄어들었네..
printf("*a+1 : %d \\n", *a+1); // 어떤 이유이지?
printf("--------------------------\\n");
//////////////////////////////////////////////////////////////////////////
이번 경우는 *a인데...이거는 a가 가르키는 곳을 따라가라 인데...
*a를 한번따라가면 또 주소값이 나온다는거야..하지만 이경우는 다른데 *a는 다시말해서 *(a+0)으로 표현할수있지
즉 *a == *(a+0) == a[0]으로 된다이거지... 그럼 위에 소스를 좀 바꿔보면
a[0] + 2라는거야... 자 여기서 a[0]은 요소를 2개가지고있는 배열의 시작주소이지..
a[0]+2는 한마디로 &a[0][1]이 되는거여.....a[0]으로부터 +2만큼 주소연산을 하라는거니까...
a[0][1](+1), a[1][0](+2) - 이거는 요소가 오버되서 다음 요소로 넘어간거..-가 되지.
즉....&a[0][1]의 값은 a[0](*a)의 값보다 8바이트 증가한 값이겠지..
<이까지 해주신말씀>
-------------------------------------------------------------------------
이게 잘 이해가 안가네요 ㅠㅠ 추가로 설명좀 부탁드리겠습니다.
스크린샷 맨 아례쪽 보시면 **a+1은 원래 시작주소를 참조하고 그 값에다가 +1하는건데..
하지만 &a[0][1]주소와 *a+1주소가 같습니다. 근데 a[0][1]의 값은 3인데 말이죠 ㅠ
아 헷갈립니다 조금만 도와주세요!
int a[3][2] = {
{1, 3},
{10, 4},
{5, 6}
};
printf("*a : %d \\n", *a); // 시작주소는 언제나 똑같군
printf("*a+1 : %d \\n", *a+1); // 음 4byte로 줄어들었네..
printf("*a+2 : %d \\n", *a+2); // 어떤 이유이지?
printf("--------------------------\\n");
printf("a[0] : %d \\n", a[0]); // 시작주소는 언제나 똑같군
printf("a[1] : %d \\n", a[1]); // 왜 이렇게 하면 값이 출력 될까?
printf("a[2] : %d \\n", a[2]); // 어떤 이유이지?
printf("&a[0][0] : %d \\n", &a[0][0]);
printf("--------------------------\\n");
printf("&a[1][0] : %d \\n", &a[1][0]);
printf("--------------------------\\n");
printf("*a+1 : %d \\n", *a+1);
printf("*(a+1) : %d \\n", *(a+1));
printf("a[1] : %d \\n", a[1]);
printf("--------------------------\\n");
printf("&a[0][1] : %d \\n", &a[0][1]);
printf("*a+1 : %d \\n", *a+1);
printf("근데 **a+1 : %d \\n", **a+1);
----------------------------------------------------------------------------
ps.
printf("**a : %d \\n", **a); // 1
printf("**(a+1) : %d \\n", **a+1); // 1+1 = 2
printf("**(a+2) : %d \\n", **a+2); // 1+2 = 3
printf("--------------------------\\n"); //
이거는 이해가 가는데 말이죠
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.