int *abc;
    int *abc2;
    int *abc3;

    abc = (int*)&(cache);
    abc2 = (int*)&(cache.a);
    abc3 = (int*)&(cache.b);
   
    printf(\"a start: %p\\n\",abc2);
    printf(\"b start : %p\\n\",abc3-abc);

cache 는 구조체 이름이야..

이런식으로 하니 상대주소 출력은 됐는데말야. 예상했던 값은 아니야.

근데 여기서 int * 를 char * 로 전부 바꾸면 예상했던 결과로 나와

도대체 포인터 타입과 캐스팅에 따라서 무슨 차이가 있는거지?

난 포인터 타입은 ++ 연산을 할 떄 메모리에서 이동되는 크기만 다른거고 전부 4바이트라고 알고 잇거든?