Computer >> Máy Tính >  >> Lập trình >> lập trình C

Phân biệt hàm int main và int main (void) trong C

int main biểu thị rằng hàm trả về một số nguyên thậm chí là ‘0’ khi kết thúc quá trình thực thi chương trình. ‘0’ đại diện cho việc thực thi thành công một chương trình.

Cú pháp của int main như sau -

int main(){
   ---
   ---
   return 0;
}

int main (void) biểu thị rằng hàm KHÔNG nhận đối số. Giả sử, nếu chúng ta không giữ khoảng trống trong dấu ngoặc, hàm sẽ nhận bất kỳ số lượng đối số nào.

Cú pháp của int main (void) như sau -

int main(void){
   ---
   ---
   return 0;
}

Trên thực tế, cả hai có vẻ giống nhau nhưng về mặt kỹ thuật, int main (void) tốt hơn vì nó đề cập rõ ràng rằng main chỉ có thể được gọi mà không có bất kỳ tham số nào.

Nói chung, trong ngôn ngữ C, nếu một chữ ký hàm không chỉ định bất kỳ đối số nào, thì đó là hàm có thể được gọi với bất kỳ số lượng tham số nào hoặc không có bất kỳ tham số nào.

Chúng ta hãy sử dụng cùng một logic để triển khai mã cho cả hai hàm. Sự khác biệt duy nhất là cú pháp cho các hàm này.

Ví dụ 1

Dưới đây là chương trình C cho hàm int main () không có đối số -

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

Ví dụ 2

Dưới đây là chương trình tương tự nhưng với hàm int main (void) -

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

error

Nếu chúng ta viết cùng một đoạn mã cho int main () và int main (void), chúng ta sẽ gặp lỗi. Điều này xảy ra vì void cho biết rằng hàm không có tham số.

Vì vậy, hãy thử loại bỏ đối số 10 trong main trong ví dụ trên và biên dịch. Do đó, sau khi cải chính, đoạn mã trên sẽ như sau -

Ví dụ

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main();
   }
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0