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

ความแตกต่างระหว่าง int main() และ int main(void) ในภาษา C


คำอธิบาย

  • int main() - ฟังก์ชันคืนค่า int ไม่ระบุพารามิเตอร์ (ใน C แปลว่ารับพารามิเตอร์ได้ทุกจำนวน)
  • int main(void) - ฟังก์ชันคืนค่า int ระบุชัดเจนว่า ไม่รับพารามิเตอร์

Syntax

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

ความแตกต่างสำคัญ

ใน C ถ้าประกาศฟังก์ชันโดยไม่ระบุพารามิเตอร์ (empty parentheses) จะหมายถึง "รับพารามิเตอร์ได้ทุกจำนวน" ไม่ใช่ "ไม่รับพารามิเตอร์" ดังนั้น int main(void) จึงถูกต้องและชัดเจนกว่า

ตัวอย่างที่ 1: int main() รับอาร์กิวเมนต์ได้

#include <stdio.h>

int main() {
    static int a = 10;
    if (a--) {
        printf("a = %d\n", a);
        main(10); // เรียก main ด้วยอาร์กิวเมนต์ - คอมไพล์ได้!
    }
    return 0;
}

คอมไพล์และรันได้ปกติ (Recursive call with argument)

ตัวอย่างที่ 2: int main(void) ไม่รับอาร์กิวเมนต์

#include <stdio.h>

int main(void) {
    static int a = 10;
    if (a--) {
        printf("a = %d\n", a);
        main(10); // Error: too many arguments to function 'main'
    }
    return 0;
}

คอมไพล์ Error เพราะ main(void) ห้ามมีอาร์กิวเมนต์

แนวทางปฏิบัติที่ดี (Best Practice)

ใช้ int main(void) เมื่อไม่มีพารามิเตอร์ เพื่อความชัดเจนและป้องกันข้อผิดพลาด