char num;
scanf("%d",&num);

num의 주소값이 1000 이라고 치면,
scanf로 정수값 입력받으면 1000부터 저장되잖아요. num의 주소값 넘겨줬으니깐..
근데 %d가 4바이트 정수로 받겠다는 뜻이니깐, num은 1바이트 char 형이긴 해도, 나머지 3바이트 까지 침범해서 저장되잖아요..

저기서 &num이 (char *)인데.... 함수 내부적으로 들어가면 %d 때문에 (int *) 이런식으로 형변환 되서 동작하는건가...??