Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

แยกความแตกต่างระหว่างฟังก์ชัน int main และ int main (เป็นโมฆะ) ใน C


int หลัก แสดงว่าฟังก์ชันส่งคืนจำนวนเต็มบางจำนวนแม้กระทั่ง '0' เมื่อสิ้นสุดการทำงานของโปรแกรม '0' หมายถึงการดำเนินการที่ประสบความสำเร็จของโปรแกรม

ไวยากรณ์ของ int main มีดังต่อไปนี้ −

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

int main(เป็นโมฆะ) แสดงว่าฟังก์ชันรับอาร์กิวเมนต์ NO สมมติว่าถ้าเราไม่ใส่ โมฆะไว้ในวงเล็บ ฟังก์ชันจะรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้

ไวยากรณ์ของ int main(void) มีดังต่อไปนี้ -

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

อันที่จริง ทั้งสองดูเหมือนจะเหมือนกัน แต่ int main(void) นั้นดีกว่าในทางเทคนิค เพราะมันระบุไว้อย่างชัดเจนว่า main สามารถเรียกได้โดยไม่มีพารามิเตอร์ใด ๆ เท่านั้น

โดยทั่วไปในภาษา C หากลายเซ็นของฟังก์ชันไม่ได้ระบุอาร์กิวเมนต์ใด ๆ นั่นคือฟังก์ชันนั้นสามารถเรียกใช้ด้วยพารามิเตอร์จำนวนเท่าใดก็ได้หรือไม่มีพารามิเตอร์ใด ๆ

ลองใช้ตรรกะเดียวกันนี้ในการติดตั้งโค้ดสำหรับฟังก์ชันทั้งสอง ข้อแตกต่างเพียงอย่างเดียวคือไวยากรณ์ของฟังก์ชันเหล่านี้

ตัวอย่างที่ 1

รับด้านล่างเป็นโปรแกรม C สำหรับ int main() ฟังก์ชันโดยไม่มีอาร์กิวเมนต์ -

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

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

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

ตัวอย่างที่ 2

รับด้านล่างเป็นโปรแกรมเดียวกัน แต่มีฟังก์ชัน 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;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

error

หากเราเขียนโค้ดเดียวกันสำหรับ int main() และ int main(void) เราจะได้รับข้อผิดพลาด สิ่งนี้เกิดขึ้นเนื่องจากเป็นโมฆะแสดงว่าฟังก์ชันไม่มีพารามิเตอร์

ดังนั้น พยายามลบอาร์กิวเมนต์ 10 ใน main ในตัวอย่างด้านบนและคอมไพล์ ดังนั้นหลังจากแก้ไขโค้ดข้างต้นจะเป็นดังนี้ −

ตัวอย่าง

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

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

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