kbhit() 함수는 현재 키보드의 눌림 상태를 나타냅니다.
반면 getch()는 눌려진 키를 리턴하는 함수이죠.
무슨말인지는 다음의 코드를 실행해보시면 압니다.






#include <conio.h>
#include <stdio.h>
void main( void )
{
while( !_kbhit() )
_cputs( "Hit me!! " );
printf( "\nKey struck was '%c'\n", _getch() );
_getch();
}
이 코드는 MSDN의 코드입니다.
이 코드를 실행해보시면, 키보드가 눌려지기전까지 계속해서 "Hit me!! "라는 문자가 화면에 계속 출력되는 것을 볼 수 있습니다.
즉, kbhit() 함수는 현재 눌려진 키가 있는지 바로 리턴해버립니다.
위의 코드에서보면 kbhit()의 값이 0일동안 계속해서 반복하면서 "Hit me!! "를 출력하게 되어 있습니다.

kbhit()는 현재 키가 눌려져있는지, 눌려져 있다면 어떤 키가 눌려져있는지 코드를 리턴합니다.
이 함수를 호출하자 마자 현재 상태를 바로 리턴해버리는 것이죠.

반면 getch()는 어떤 키를 누를 때까지 기다립니다.
즉, 아무 키가 안눌려지면 키가 눌려질 때까지 무작정 기다립니다.

getch()는 키 입력을 받아야 할 때 쓰게 됩니다.
예를 들어서 화면에 메뉴를 출력하고, 그 메뉴의 키가 입력될때까지 기다리기 위해 사용할 수 있습니다.
반면 kbhit()는 게임등에서 사용할 수 있죠.
예를 들어서 자동차 게임을 만들 경우,
방향키를 눌려서 자동차를 움직이게 되어 있다면,
방향키를 누르지 않아도 자동차는 계속 움직여야 하기 때문에,
kbhit()로 키 눌림 상태를 알아보고, 아무 키도 안 눌려졌다면 자동차를 앞으로 이동시키고,
방향키가 눌려졌다면 그 방향으로 이동하도록 만들 때 사용할 수 있습니다.




[출처] kbhit() 함수|작성자 다몽이