Cについての質問です。

#include <stdio.h>

int main(){
static int i=1;

if(i <= 10){
printf("i = %d\n",i);
i++;
main();
}
return 0;
}

というプログラムをビルドして実行しても一瞬現れて消えてしまいます。
getchar();を入れれば良いのかなぁと試してもダメでした。なぜでしょうか。。
あと、呪文のように書いてきたreturn 0;というのは
そこでプログラムが終了するから戻り値は0であるという解釈でいいのでしょうか。
教本に載ってるコードを一字一句間違えずに写しても、最後まで実行出来ないのが多数あるのも気になります。
何十回と見直したけどミスがあるということなのでしょうか。。

OSはXP、統合開発環境はVS.net 2003でwin32コンソールプロジェクトから作成して、
教本は「猫でもわかるC言語プログラミング」を使っています。
よろしくお願いします。