doori****
150
2022-08-06 16:39:22
2
71

포인터주소 관련 질문 있습니다.


int main() {

double i, * ip1, * ip2;


ip1 = &i;

ip2 = ip1 + 1;


printf("%d\n", ip2 - ip1); //1

printf("%d\n", (int)ip2 - (int)ip1); //8


return 0;

}

위 코드에서  출력값이 각각 1, 8이 나오는 이유가 궁금합니다.

첫번째는 +1이 8차이 나니까 8

두번째는 +1이 int로 형변환되어 4바이트로 보면 4차이 나니까 4

라고 생각했는데 아니더군요

답변 부탁드립니다!!!

0
  • 답변 2

  • Bingka
    48
    2022-08-06 21:07:27

    https://youtu.be/wNPWpbS1PLU 두들낙서님의 포인터 강좌인데 24강부터 28강까지 들어보시면 왜 그런지 이해가 가실거에요

  • doori****
    150
    2022-08-07 10:50:31

    Bingka 

    첫 번째 출력은 포인터 간의 뺄셈은 거리를 나타내서 1이고

    두 번째 출력은 int로 형변환 해줘서 주소값의 차이가 8이므로 8이 출력되는게 맞나요?

  • 로그인을 하시면 답변을 등록할 수 있습니다.