int main(): Hàm trả về int. Trong C, nếu không khai báo tham số, hàm có thể nhận bất kỳ số lượng đối số nào.
int main(void): Hàm trả về int và không nhận bất kỳ tham số nào. Đây là cách khai báo chuẩn kỹ thuật hơn.
Ví dụ minh họa sự khác biệt
// int main() - có thể gọi main(10) không lỗi
int main() {
static int a = 10;
if (a--) { printf("a=%d\n", a); main(10); }
return 0;
}
// Kết quả: in 9 xuống 0, không lỗi
// int main(void) - gọi main(10) sẽ lỗi compile
int main(void) {
static int a = 10;
if (a--) { printf("a=%d\n", a); main(10); } // Error
return 0;
}
// Phải sửa thành main() thì mới chạy được
Kết luận: Nên dùng int main(void) để rõ ràng hàm main không nhận tham số.