Void main() và int main() khác nhau như thế nào?

mình thấy trên mạng thường dùng int main() và return 0. còn các thầy trong trường mình thì lại thường dùng void main(). không biết nó khác nào chỗ nào mn nhỉ ??

1 Like

void main không thuộc về chuẩn ANSI C. int main là chuẩn ANSI C.


Nếu compiler hỗ trợ void main, Microsoft Visual Studio cl.exe compiler, thì mình có thể chạy được. Còn không thì nó sẽ báo lỗi.

Xem thêm: http://portal.daynhauhoc.com/series/c-bai-36-ham-main-again/

5 Likes

Nếu mình nhớ k lầm thì thực ra khi bạn dùng void main() thì mặc địch nó cũng trả về 0, giá trị trả về này để thông báo là có lỗi khi chạy hay k.
0 là không có lỗi, khác 0 là có lỗi.
Nên 2 cách viết là giống nhau !

Chuẩn nhất là int Main(void)

Nhờ bạn dẫn chứng cho mọi người một tài liệu hoặc một trang web nào đó đề cập đến chuẩn nhất trong khai báo hàm main trong C++ với.

  1. Mình thấy tag là C nên mình xin trả lời theo chút hiểu biết hạn hẹp về ngôn ngữ C
  2. Chuẩn C99 khuyến khích sử dụng int main(void) và int main ( int argc, char *argv[] ) (cái nào cũng được)
    3)Trong C++ , Main() là hàm ko có tham số, còn C thì là hàm không quan tâm tham số
    :stuck_out_tongue:
1 Like

điều gì xảy ra nếu bỏ thêm tham số vào hàm main trong c++ nhỉ

Thì nó là tham số khởi động chương trình thôi bạn ạ. Giả sử bạn có một tập tin C:\ahjhj.txt, và mở bằng ứng dụng notepad.exe, chỉ thị ngầm định đối với Windows là:

C:\Windows\System32\notepad.exe "C:\ahjhj.txt"

Nếu ứng dụng notepad được viết là int main(int argc, char* argv[]) thì trong trường hợp này, argc == 1argv[0] == "C:\ahjhj.txt"

Tham số thể hiện rõ nhất trong CLI, ví dụ Command Prompt. Chẳng hạn như khi bạn chạy lệnh ipconfig /all thì "/all" chính là tham số đầu tiên, ứng với argv[0], và chỉ có 1 tham số nên argc == 1

2 Likes

thanks a :)))))))))))))

Nó chỉ là cái chuẩn người ta quy định thế thì phải viết thế.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?