Allora:
L'ANSI C è lo standard di definizione del C. In pratica un pool di persone (fra cui il creatore del C ed altri suoi profondi conoscitori) si sono riuniti la prima volta nel '89 e hanno deciso quale dovevano essere i caratteri 'imprescindibili' del linguaggio di programmazione C. Ogni anno, questo standard viene riveduto e ampliato e si hanno varie versioni (ISO 99, ISO 00, etc. etc.). Ora l' ANSI C dice che la funzione main deve ritornare un intero. E su questo non si scappa. Se non specifichi il tipo di ritorno della main per ANSI C è di default int e se lo setti a void ma cmq fai return 0 (quindi ritorni un intero) viene castato automaticamente ad int. Ecco tutto. Il modo corretto di utilizzare la main è quello che ti ho detto io, lasciando stare quello che dice il tuo professore.
bye